在我的代码中,我正在尝试捕获我的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”。我一直试图解决这个问题。我做了足够的搜索,但没有用。
这可能是我的模拟器的问题吗?或者,我应该使文件“复制”本机可执行文件?如果是这样,请告诉我如何。
答案 0 :(得分:0)
已多次解释过。即使su
二进制文件可用 - Google也不希望它可以从第三方Java应用程序访问。根据Google的设计,只允许shell
用户升级权限。为了能够使用Java代码中的su
,您需要编译自己的su
二进制文件而无需用户ID检查。