0
我一直试图在NDK库读取系统文件,文件如:如何使用NDK在根设备上的系统目录中读取文件?
/data/misc/wifi/wpa_supplicant.conf
这里是我试过的代码:
//MainActivity.java:
private native String getNetworkList();
if(RootTools.isAccessGiven()) {
String jsonList = getNetworkList();
Log.d("TAG", "jsonList=" + jsonList);
}
和JNI方法NDK库:
//getNetworkList()
string name = "/data/misc/wifi/wpa_supplicant.conf"
string command = "su -c \"chmod 0777 ";
command += name;
command += "\"";
LogE("command=%s\n", command.c_str());
int exitCode = system(command.c_str());
LogE("exitCode=%d\n", exitCode);
//chmod success, exitCode=0
FILE *pFile = fopen(name, "r");
if (!pFile)
{
LogE("fopen() failed: %s\n", strerror(errno));
return false;
}
fopen()获取权限被拒绝的错误。
我应该怎么做? 谢谢
NDK的不给你任何异常的安全模型。你将不得不使用你的su root shim(或者让你的设备“植根”的任何东西)启动一个助手应用程序(可能是'cat')作为root来为你读取数据。这已经在这里被覆盖了很多次,所以你应该期待你的问题可能会被重复关闭。 –