从Shell脚本安装APK和启动应用程序

时间:2017-12-06 07:13:51

标签: android linux bash shell android-scripting

我的要求是: App A 将运行已在“system / bin”位置的shell脚本(myshellscript.sh),shell脚本将安装 App B 存储在“sdcard / Download”位置,并将启动 App B

所以在继续之前我想告诉你

  1. 我的设备已经扎根,因为我有自定义ROM闪现在其中
  2. App A是具有系统权限的系统应用程序。
  3. 当我通过命令运行我的脚本时,我的脚本按照要求正常工作:adb shell sh system/bin/myshellscript.sh
  4. 我对shell脚本知之甚少。
  5. 下面的

    是我的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();
                }
    

1 个答案:

答案 0 :(得分:0)

当adb shell执行脚本时,它在shell权限下运行。 Shell拥有的权限高于沙盒所用的应用程序。