對不起,我是一個(gè)新手,在嘗試從手機(jī)的內(nèi)部存儲(chǔ)中檢索所有 mp3 文件時(shí)遇到了一些問題。不知道為什么,但我無法檢索任何文件,即 ArrayList 正在獲取空值這是我來自 PlaylistActivity 的代碼,這里是我檢索 mp3 文件的地方:private static final int RC_READ = 1;private RecyclerView mRecycler;private ArrayList<File> mSongs;private String[] mSongNames;private MyAdapter mAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_playlist); mRecycler=(RecyclerView) findViewById(R.id.recyclerView); mRecycler.setLayoutManager(new LinearLayoutManager(this)); mRecycler.setHasFixedSize(true); mSongs=new ArrayList<>(); if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, RC_READ ); } else { getSongsPlayList(); }}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode== RC_READ && grantResults[0]== PackageManager.PERMISSION_GRANTED){ getSongsPlayList(); }}private void getSongsPlayList(){ Log.d("Music","getSongsPlayList()"); mSongs = findSongs(Environment.getExternalStorageDirectory().getAbsolutePath()); if (mSongs != null) { mSongNames = new String[mSongs.size()]; for (int i = 0; i < mSongs.size(); i++) { mSongNames[i] = mSongs.get(i).getName().replace(".mp3", "").replace(".wav", ""); Log.d("Music","Song name:"+mSongNames[i]); } } else { Log.d("Music", "Null"); mSongNames = new String[1]; mSongNames[0] = "Star Boy"; } mAdapter = new MyAdapter(mSongNames, getApplicationContext()); mRecycler.setAdapter(mAdapter);}
1 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
我不是 100% 確定,但在我看來,您似乎沒有要求外部存儲(chǔ)權(quán)限。
從 Android 6.0(API Level 23)開始,在 AndroidManifest.xml 中寫入權(quán)限已經(jīng)不夠了。您現(xiàn)在還必須在運(yùn)行時(shí)請求權(quán)限。例如,在onCreate
您的活動(dòng)方法中
如果這沒有幫助,您需要檢查 LogCat 是否有異常或其他信息
添加回答
舉報(bào)
0/150
提交
取消