我需要有关如何使用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);
}
答案 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
工作................