我的要求是: App A 将运行已在“system / bin”位置的shell脚本(myshellscript.sh),shell脚本将安装 App B 存储在“sdcard / Download”位置,并将启动 App B 。
所以在继续之前我想告诉你
adb shell sh system/bin/myshellscript.sh
是我的shell脚本:
#!/bin/bash
echo "Shell script works on Android"
pm install -r "/sdcard/Download/SampleApplication.apk";
echo "Going to sleep for 15 sec"
sleep 15;
echo "woked up after 15 sec"
am start -n "com.aaa.sampleapplication/.MainActivity";
sleep 5;
所以问题是当我通过上面提到的命令运行这个脚本时工作正常但是当按钮点击 App A 时,以编程方式运行相同的脚本所有用脚本编写的命令都在工作,除了{{1} } 我试图运行我的脚本的代码是:
pm install -r "/sdcard/Download/SampleApplication.apk";
更新 我捕获了adb日志并获得了以下异常:
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("sh /system/bin/myshellscript.sh");
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Throwable t)
{
t.printStackTrace();
}
答案 0 :(得分:0)
当adb shell执行脚本时,它在shell权限下运行。 Shell拥有的权限高于沙盒所用的应用程序。