在我完全root的Android设备中执行“su”失败

时间:2012-04-24 08:56:12

标签: android android-ndk su

我将此行添加到我的代码

Process process = Runtime.getRuntime().exec("su -c");

Process process = Runtime.getRuntime().exec("su");

尝试运行“su”命令,

process.exitValue()返回1表示失败。

这发生在我的一个Android设备上,而我的另一个root用户设备与此命令完美配合。 (process.exitValue()返回0)

有人可以教我如何追踪错误或如何解决错误吗?

当我的两个设备几乎处于相同状态时,我对此错误感到困惑。

感谢您的回复。


大家好,

感谢您与我讨论这个问题。你的回复告诉我一个线索,我已经删除了我的旧su并放置了一个新的su。幸运的是,返回值现在为0,我想这意味着正确。但是,您是否有人知道.exec(“su -c”)和.exec(“su”)之间的区别是什么?如果你知道区别,请告诉我。

3 个答案:

答案 0 :(得分:1)

命令su(表示超级用户)仅在 rooted 手机上有效。这就是你的root手机识别它并按预期工作的原因。因此,要么根据您的其他设备,要么将这个想法放在非根电话上:)

答案 1 :(得分:1)

怀疑你在问题​​手机上缺少超级用户,对吗? 或者至少有关于超级用户的事情可能是错误的(版本,二进制文件......)

su调用超级用户,允许root权限访问。

最新版本的超级用户似乎出现了许多问题。

尝试删除安装其他版本:

http://goo.im/superuser

另一个注意事项:如果您尝试获取root访问权限或以root身份执行命令,则不应仅使用exec("su")。通过stericson自己查看 RootTools 库;)

http://code.google.com/p/roottools/

答案 2 :(得分:0)

由于这是我搜索短语的唯一结果,我想我会为其他人发布更新。

按照安装Cyanogenmod的说明进行操作。我的问题通过在设备上禁用大容量存储模式解决(将其更改为其他选项之一)。