无法从内存中检索 mp3 文件

对不起,我是一个新手,在尝试从手机的内部存储中检索所有 mp3 文件时遇到了一些问题。不知道为什么,但我无法检索任何文件,即 ArrayList 正在获取空值


这是我来自 PlaylistActivity 的代码,这里是我检索 mp3 文件的地方:


private static final int RC_READ = 1;

private RecyclerView mRecycler;

private ArrayList<File> mSongs;

private String[] mSongNames;

private MyAdapter mAdapter;


@Override

protected 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(); }

}


@Override

public 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);

}


阿晨1998
浏览 169回答 1
1回答

DIEA

我不是 100% 确定,但在我看来,您似乎没有要求外部存储权限。从 Android 6.0(API Level 23)开始,在 AndroidManifest.xml 中写入权限已经不够了。您现在还必须在运行时请求权限。例如,在onCreate您的活动方法中如果这没有帮助,您需要检查 LogCat 是否有异常或其他信息
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java