脚本在adb中运行良好,但在Android代码中运行不正常

时间:2013-07-14 14:17:08

标签: android shell adb

在我的代码中,我正在尝试捕获我的Android屏幕的快照。我正在使用shell脚本。

    proc = runtime.exec("su");
    OutputStream os = proc.getOutputStream();
    os.write("copy".getBytes("ASCII"));
    os.flush();
    System.out.print("Finished");

模拟器具有超级用户,即su文件在/ system / xbin / location中可用。这里,文件副本具有以下内容:

/system/bin/screencap -p /data/data/com.example.code/files/Hari123.png

我使用以下命令在adb(命令提示符)中编译了此文件:

adb shell chmod 6755 /system/bin/copy

执行此操作后,我在同一命令提示符中执行了该命令:

adb shell exec copy

所有这些都很好。但是,在Android代码中(首先提到),甚至还有以下代码:

proc = runtime.exec("su");

给出proc.exitvalue()为“1”。我一直试图解决这个问题。我做了足够的搜索,但没有用。

这可能是我的模拟器的问题吗?或者,我应该使文件“复制”本机可执行文件?如果是这样,请告诉我如何。

1 个答案:

答案 0 :(得分:0)

已多次解释过。即使su二进制文件可用 - Google也不希望它可以从第三方Java应用程序访问。根据Google的设计,只允许shell用户升级权限。为了能够使用Java代码中的su,您需要编译自己的su二进制文件而无需用户ID检查。