0

在我的代码中,我试图捕获我的 android 屏幕的快照。我正在使用相同的shell脚本。

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

模拟器具有超级用户,即 su 文件位于 /system/xbin/ 位置。此处,文件副本具有以下内容:

/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");

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

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

4

1 回答 1

0

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

于 2013-07-14T14:36:45.707 回答