如何解决NDK代码中的权限拒绝问题?

时间:2019-05-29 06:45:42

标签: android android-ndk fopen permission-denied

我想用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 

有人可以给些建议吗?一切都会感激的!

1 个答案:

答案 0 :(得分:0)

我想我找到了原因! / sdcard / DCIM /中bmp文件的权限为-rw-rw ----。即使运行chmod命令并在AndroidManifest.xml和运行时中设置权限,也无法更改它。
所以我将文件刻录到/ data /和chmod 777 thefile。那么它可以很好地运行,并且不需要AndroidManifest.xml中的权限或运行时权限。