【问题标题】:"Permission Denied" error when write image file into sdcard将图像文件写入 sdcard 时出现“Permission Denied”错误
【发布时间】:2020-12-26 15:56:14
【问题描述】:

我正在使用一个演示项目来获取图像并将其保存到 SD 卡中,效果很好。但是用同样的代码新建项目后,一直报“Permission Denied”错误和IO异常。

xml和gradle文件是从demo项目中复制过来的,只删除了几个activity,xml文件中说明了权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

也在代码中动态请求

public class PermissionManager {
    private static final int REQUEST_CODE_ASK_PERMISSIONS = 1;
    private static final String[] PERMISSIONS_ARRAYS = new String[] {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE};
    private static List<String> permissionsList = new ArrayList<>();
    private PermissionManager() {
    }
    public static void onResume(final Activity activity) {
        boolean isHasPermission = true;
        for (String permission : PERMISSIONS_ARRAYS) {
            if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
                isHasPermission = false;
                break;
            }
        }
        if (!isHasPermission) {
            for (String permission : PERMISSIONS_ARRAYS) {
                if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
                    permissionsList.add(permission);
                }
            }
            ActivityCompat.requestPermissions(activity,
                    permissionsList.toArray(new String[permissionsList.size()]), REQUEST_CODE_ASK_PERMISSIONS);
        }
    }

我发现关于这个问题有几个问题,但如上所示,权限请求和声明都已设置,并且它们在旧项目中运行良好,有人可以提供一些提示吗?

【问题讨论】:

  • 打开应用确实会弹出权限请求对话框,在设置-应用中,应用确实有存储权限。

标签: java android filesystems


【解决方案1】:

当您处理媒体文件并可能导致您的问题时,运行 Android 10+ 的设备有一项新功能。对于 Android 10,您可以通过将此行添加到 manitest 文件来临时选择退出范围存储:

 <application android:requestLegacyExternalStorage="true" ... >

【讨论】:

  • 非常感谢,它可以工作,虽然我在没有这个问题的旧项目中找不到这条线......
  • 我会继续研究,如果其他人能给点提示就好了哈哈
猜你喜欢
  • 2011-06-16
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
相关资源
最近更新 更多