文件权限被拒绝

时间:2017-01-18 19:47:11

标签: android android-permissions

我在使用API​​ 22的Galaxy S5和使用API​​ 25的Nexus 6P上测试我的应用程序。我的应用程序编译为23.

我正在尝试将obb文件中的图像读取为:

Bitmap bmImg = BitmapFactory.decodeFile(obbPath+"img1.jpg"));

当我在Nexus 6P上运行时没有问题,但是对于Galaxy S5,它会出错:

01-18 14:42:36.007 14032-14032/com.nick.app E/BitmapFactory: 
Unable to decode stream: java.io.FileNotFoundException: 
/mnt/obb/8a0cd43307e4b1f6568009da3580d11f/img1.jpg: open failed: EACCES (Permission denied)

在我的Android清单中,我已经声明了如下权限:

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

这个错误让我感到困惑的是它在旧设备上,而不是新的运行时权限,我已经实现了。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  

我的应用程序编译为23。

您的compileSdk是什么并不重要,但重要的是targetSdk。如果这是23或更高,那么如果您在Android 6.0或更高版本上运行应用程序,那么您的清单权限无关紧要,因为在这种情况下,必须支持运行时权限为documented here

有一些库可以简化实现运行时权限的任务,但是如果你真的不需要应用程序中的任何API23 +功能,你应该能够简单地将targetSdk降低到22然后在任何平台上尊重您的清单权限。

答案 1 :(得分:0)

奇怪的是,重新启动设备足以解决我的问题。没有想过最初这样做但现在已经奏效了。这个问题对我来说很奇怪,但现在已经修复了。