我在使用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"/>
这个错误让我感到困惑的是它在旧设备上,而不是新的运行时权限,我已经不实现了。有什么建议吗?
答案 0 :(得分:0)
我的应用程序编译为23。
您的compileSdk
是什么并不重要,但重要的是targetSdk
。如果这是23
或更高,那么如果您在Android 6.0或更高版本上运行应用程序,那么您的清单权限无关紧要,因为在这种情况下,必须支持运行时权限为documented here
有一些库可以简化实现运行时权限的任务,但是如果你真的不需要应用程序中的任何API23 +功能,你应该能够简单地将targetSdk
降低到22
然后在任何平台上尊重您的清单权限。
答案 1 :(得分:0)
奇怪的是,重新启动设备足以解决我的问题。没有想过最初这样做但现在已经奏效了。这个问题对我来说很奇怪,但现在已经修复了。