Android:即使有权限,也无法列出/ storage / emulated / 0个文件

问题描述

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

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

我正在数部手机上测试此代码,并且运行良好。但是,在我的Huawei上,listFiles()方法在null上返回/storage/emulated/0 directory

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

在授予权限的情况下,什么可以阻止读取文件?

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

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

谢谢

解决方法

返回null的Huawei设备是否运行Android 10?似乎对于该路径,Android从API 29开始返回null。您可能想检查一下这个问题here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...