2

当我将此行添加到我的代码中时

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

或者

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

试图运行“su”命令,

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

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

谁能教我如何追踪错误或如何修复它?

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

感谢您提前回复。


嗨,大家好,

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

4

3 回答 3

1

该命令su(表示Super User)仅在有手机上有效。这就是为什么您的手机可以识别并按预期工作的原因。所以,要么你植根你的其他设备,要么把这个想法放在非植根手机上:)

于 2012-04-24T08:57:56.900 回答
1

怀疑您在有问题的手机上缺少超级用户,是吗?或者至少有关超级用户的某些内容可能是错误的(版本,二进制文件......)

su调用是否允许 root 访问的超级用户。

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

尝试删除它并安装其他版本:

http://goo.im/superuser

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

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

于 2012-04-24T09:03:05.457 回答
0

由于这是我搜索该短语时得到的唯一结果,因此我想我会为遇到此问题的其他人发布更新。

遵循安装Cyanogenmod的说明。通过禁用设备上的大容量存储模式(将其更改为其他选项之一)解决了我的问题。

于 2013-09-28T16:19:14.117 回答