为了账号安全,请及时绑定邮箱和手机立即绑定

无法从内存中检索 mp3 文件

无法从内存中检索 mp3 文件

阿晨1998 2021-09-26 16:46:21
对不起,我是一个新手,在尝试从手机的内部存储中检索所有 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 是否有异常或其他信息


查看完整回答
反对 回复 2021-09-26
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信