对不起,我是一个新手,在尝试从手机的内部存储中检索所有 mp3 文件时遇到了一些问题。不知道为什么,但我无法检索任何文件,即 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贡献1820条经验 获得超2个赞
我不是 100% 确定,但在我看来,您似乎没有要求外部存储权限。
从 Android 6.0(API Level 23)开始,在 AndroidManifest.xml 中写入权限已经不够了。您现在还必须在运行时请求权限。例如,在onCreate
您的活动方法中
如果这没有帮助,您需要检查 LogCat 是否有异常或其他信息
添加回答
举报
0/150
提交
取消