java - 如何在 JNI 代码中获取 Android 上的 root 访问权限
问题描述
我添加了一些 Java 代码来获得 root 访问权限,只需创建一个新进程并执行 su 命令。但是我的一些 JNI C 代码需要 root 权限。例如,我调用了 open("/dev/block/mmcblk0",O_RDONLY) ,这需要 root 访问权限。但尽管我有 root 访问权限,但它仍然失败。为什么会这样以及如何解决这个问题?
我的 Android 设备已被 root 并且我的应用程序成功获得 root 权限。
我试图通过这种方式获得root访问权限:
Process process=null;
DataOutputStream os=null;
try{
process=Runtime.getRuntime().exec("su");
os=new DataOutputStream(process.getOutputStream());
os.writeBytes(command+"\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e) {
Log.d("###DEBUG###",e.getMessage());
return false;
} finally {
try{
if(os!=null){
os.close();
}
process.destroy();
}catch(Exception e){
}
}
解决方案
推荐阅读
- isis - 从 v1.12.2 迁移的 Apache Isis 构建失败。未知存储库应用程序用户,
- java - 方法返回缓存结果而不是去数据库
- mustache - 忽略从 Mustache 模板中的父上下文继承的属性
- c# - 默认 GetHashCode 与垃圾收集
- sql - SQL Server CASE 使用 2 个不同的表
- go - 所有 Go 项目都需要在 GOPATH 下运行吗?
- go - 新版本的 protoc-gen-go 丢弃已知类型
- reactjs - 使用 Enzyme.js 模拟输入更改时出现错误 - 状态不正确更新
- c# - 如何解决 mscorlib 和 Nuget 包之间的 ApplicationException 冲突
- azure - Azure 解压缩自动化