【问题标题】:Android : unable to list /storage/emulated/0 files despite permissionsAndroid:尽管有权限,但无法列出 /storage/emulated/0 文件
【发布时间】:2021-01-11 04:50:44
【问题描述】:

我有以下代码来处理存储权限:

private void getGalleryPermission() {
        Log.d(TAG, "getGalleryPermission: checking permissions.");
        String[] permissions = { WRITE_STORAGE, READ_STORAGE };
        if (ContextCompat.checkSelfPermission(requireActivity(), WRITE_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Log.d(TAG, "getGalleryPermission: write storage is granted.");
            if (ContextCompat.checkSelfPermission(requireActivity(), READ_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                Log.d(TAG, "getGalleryPermission: read storage is granted.");
                setupRecyclerView();
            }
            else {
                Log.d(TAG, "getGalleryPermission: asking to read the storage.");
                requestPermissions(permissions, REQUEST_STORAGE_PERMISSION_RESULT);
            }
        }
        else {
            Log.d(TAG, "getGalleryPermission: asking to write the storage.");
            requestPermissions(permissions, REQUEST_STORAGE_PERMISSION_RESULT);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Log.d(TAG, "onRequestPermissionsResult: request code " + requestCode);
        if (requestCode == REQUEST_STORAGE_PERMISSION_RESULT) {
            Log.d(TAG, "onRequestPermissionsResult: request code is correct.");
            if (grantResults.length > 0) {
                for (int grantResult : grantResults) {
                    if (grantResult != PackageManager.PERMISSION_GRANTED) {
                        Toast.makeText(requireActivity(), "Don't have permission to access the Gallery !", Toast.LENGTH_SHORT).show();
                        break;
                    }
                }
                // Setup the gallery once the permissions are granted
                setupRecyclerView();
            }
        }
    }

我正在我的几部手机上测试这段代码,它运行良好。但是,在我的华为上,listFiles() 方法在/storage/emulated/0 directory 上返回null

我已经在手机设置+日志中签入,并且授予了存储权限(就像在其他工作手机上一样)。

尽管授予了权限,什么可以阻止文件被读取?

在某些手机上,/storage/emulated/0 是否可能不是获取所有图库文件的正确目录?

PS:我已经检查了我手机中文件应用程序中的目录,它不是空的(DCIM 等......在里面)。

谢谢

【问题讨论】:

  • 您好,请添加您的listFiles 方法,我想在我的华为设备上测试您的代码

标签: android android-recyclerview android-permissions android-gallery android-file


【解决方案1】:

返回null的华为设备是否运行Android 10?自 API 29 起,Android 似乎对于该路径返回 null。您可能需要检查此问题 here

【讨论】:

  • 这是真正的答案,但它在您提供给我的链接中:
猜你喜欢
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 2022-10-02
  • 2021-02-28
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多