我想用ndk代码读取bmp文件,但始终失败。错误代码显示权限被拒绝。如何解决这个问题?
IDE是Android Studio 3.1.2,但我认为与IDE无关。该设备是带有Android 9 API28的hipy960。 我已经参考了一些类似问题,并在Manifest.xml中添加了用户权限并指定了绝对路径,但是它仍然无法正常工作!但是,如果我将其构建为executalbe文件并推送至/ data /并给予完全许可,则它可以正常工作!
这是ndk代码:
FILE *fpbmp = fopen (imagefile, "r+");
if (fpbmp == NULL) {
LOGD ("open file failed!");
LOGD("code %s \n", strerror(errno));
}
和AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wangzh.normaltest">
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
....
日志显示错误代码表示权限被拒绝:
/sdcard/DCIM/1_1.bmp
open file failed!
code Permission denied
有人可以给些建议吗?一切都会感激的!
答案 0 :(得分:0)
我想我找到了原因!
/ sdcard / DCIM /中bmp文件的权限为-rw-rw ----。即使运行chmod命令并在AndroidManifest.xml和运行时中设置权限,也无法更改它。
所以我将文件刻录到/ data /和chmod 777 thefile。那么它可以很好地运行,并且不需要AndroidManifest.xml中的权限或运行时权限。