如何使用JNI访问系统文件

时间:2013-02-13 05:11:05

标签: android permissions android-ndk sys

我需要有关如何使用Jni编辑系统的示例代码。  我需要编辑位置/ sys / class / gpio / gpio41 / value

中的文件

我试过这些代码,但它不起作用。

#include <jni.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>



 jstring
       Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                              jobject thiz )
 {

int fd ;
    char gpio_path[30];
    sprintf(gpio_path,"/sys/class/gpio/gpio41/value");



    fd = open(gpio_path, O_RDWR | O_NONBLOCK );

        write(fd, "1", 2);


    close(fd);



return (*env)->NewStringUTF(env, gpio_path);

}

2 个答案:

答案 0 :(得分:1)

通常,sysfs文件在android中不可写入以解决安全问题。

特定的应用程序可以写入适当的uid,如系统,媒体,图形等。

请参阅https://android.googlesource.com/platform/cts/+/master/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java并查看testAllFilesInSysAreNotWritable()方法。

答案 1 :(得分:1)

赋予文件权限执行命令

chmod 777 / sys / class / gpio / gpio41 / value

工作................