首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取Android Q及以上版本的音乐文件夹中的文件列表?

如何获取Android Q及以上版本的音乐文件夹中的文件列表?
EN

Stack Overflow用户
提问于 2021-05-11 08:14:07
回答 1查看 222关注 0票数 1

我已经打开了文件夹中的文件列表,如下所示,但我不能在Android Q(Android 10)或更高版本中使用下面的方法。

如何使用MediaStore加载音乐文件夹中的文件列表?

代码语言:javascript
运行
复制
public void getFileListInFolder() {

    String path = Environment.getExternalStoragePublicDirectory(DIRECTORY_MUSIC);
    File directory = null;

    try {
        directory = new File(path);
        Log.i("debug","dir = " + directory);
    }
    catch (Exception e)
    {
        Log.i("debug","Uri e = " + e);
    }

    File[] files = directory.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.isFile();
        }
    });

    if(files != null)
    {
        for (int i = 0; i < files.length; i++) {
            Log.i("debug", "FileName:" + files[i].getName());
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-11 11:13:57

从Android q开始就不再推荐使用getExternalStoragePublicDirectory

为了提高用户隐私,不推荐直接访问共享/外部存储设备。当应用程序以{@link android.os.Build.VERSION_CODES#Q}为目标时,应用程序将无法再直接访问此方法返回的路径。通过迁移到{@link Context#getExternalFilesDir(字符串)}、{@link MediaStore}或{@link Intent#ACTION_OPEN_DOCUMENT}等替代选项,应用程序可以继续访问共享/外部存储上存储的内容。

这意味着不能直接读写/storage/emulated/0/Music的文件,但可以读/写/storage/emulated/0/Android/data/com.youapp/files/Music下的文件

代码语言:javascript
运行
复制
public void getFileListInFolder() {
    String path = getExternalFilesDir(DIRECTORY_MUSIC).getAbsolutePath();
    Log.d(TAG, "getFileListInFolder:path " + path);
    File directory = null;
    try {
        directory = new File(path);
        Log.i(TAG,"dir = " + directory);
    }
    catch (Exception e)
    {
        Log.i(TAG,"Uri e = " + e);
    }
    File[] files = directory.listFiles();
    Log.i(TAG, "getFileListInFolder:files " + files);
    for (File f:
         files) {
        Log.d(TAG, "getFileListInFolder: " + f.getName());
    }
    if(files != null)
    {
        for (int i = 0; i < files.length; i++) {
            Log.i(TAG, "FileName:" + files[i].getName());
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67479014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档