Android无法打开文件FileNotFoundException(权限被拒绝),但授予PermissionRead

时间:2018-12-03 07:11:33

标签: android file-not-found

Android无法使用FileNotFoundException(拒绝权限)打开文件,但授予PermissionRead。

  

java.io.FileNotFoundException:/ mnt / obb /“文件详细路径”:打开   失败:EACCES(权限被拒绝)

     

obb文件为ERROR_ALREADY_MOUNTED。

int readPermission = ContextCompat.checkSelfPermission(activity, mPermissions[0]);
int writePermission = ContextCompat.checkSelfPermission(activity, mPermissions[1]);

readPermission == 0;
writePermission == 0;

PermissionRead被授予。

Manifest.xml

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

Android OS 6.0版设备。

为什么...?

3 个答案:

答案 0 :(得分:2)

尝试授予运行时权限

int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (permission != PackageManager.PERMISSION_GRANTED) {
    // We don't have permission so prompt the user
    ActivityCompat.requestPermissions(
            activity,
            PERMISSIONS_STORAGE,
            REQUEST_EXTERNAL_STORAGE
    );
}

答案 1 :(得分:2)

您实现了运行时权限吗?, 首先,您从设置中手动授予存储权限,然后检查是否发生异常,否则,您在实现权限时会出错。

答案 2 :(得分:0)

谢谢您的回答...

这是一个非常奇怪的现象。 一次,我能够修复它以使其正常工作。

结论:解决方案

使用jobb命令创建一个obb文件,其名称与在Google Play端重命名的名称相同。

那是...在像这样进行修复之前。(示例)

jobb -pn com.test.testapp -pv 1 -d ./myfiles -o main1.obb

如果您将“ main1.obb”上传到Google Play,则将同时下载“ main.1.com.test.testapp.obb”和apk下载。

但这不好。

校正后,就这样编程了。

jobb -pn com.test.testapp -pv 1 -d ./myfiles -o main.1.com.test.testapp.obb

为什么:修复原因

当发生以下错误时,我认为obb挂载有问题:

java.io.FileNotFoundException: /mnt/obb/"file detailed path": open failed: EACCES (Permission denied)

因此,我尝试在错误后卸载obb。 然后又出现错误。

public static final int ERROR_PERMISSION_DENIED = 25;

如果我尝试卸载已安装的obb,则是权限错误。 这很奇怪。

当我在Internet上查询时,问题是使用jobb命令创建的obb文件名吗?还是包裹名称?据说发生了。

因此,我更改了jobb命令生成的obb文件名。 这没有问题。当然,“ READ_EXTERNAL_STORAGE”一直都在获得。

我什么都不懂。 只是应用程序正常工作。

谢谢。