我们如何从Android应用程序中执行shell脚本文件?

ans*_*shu 6 permissions android

我正在尝试从我的Android应用程序执行shell脚本.

首先,我想从Java运行shell脚本,它像所有命令做工精细pwd,cd,netstat.移动文件,复制文件.

比我从一个Android应用程序尝试过了,我得到输出cd,pwd,netstat和回声陈述,在剧本,但对于移动和复制文件不工作.

是否需要从脚本文件执行这些命令所需的权限,而这些命令在adb shell中正常工作?

我的代码看起来像这样:

void execCommandLine()
    {
       //***********************
        try
        {
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec("ls -all");

            proc = rt.exec("sh /data/shTest.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();
          }
Run Code Online (Sandbox Code Playgroud)

我的脚本文件如下:

#!/bin/sh
echo "Knowledge is Power"
echo "I am a script"
echo $PATH
netstat
pwd
cd /data
pwd
cd /system/bin
pwd
  mv  /data/local/hello.txt /data/
  cp  /data/local/hello1.txt /data/
cd /data/local/tmp
cd /system/bin
Run Code Online (Sandbox Code Playgroud)

只有cpmv命令没有显示预期的结果.请给我一些指导.

我正在尝试并将其测试到模拟器中的第一件事.在/ system/bin有mv commond我也尝试过busybox但我没有得到预期的结果.对于root privilage如何继续..给一些想法继续.

小智 1

关于您可能会发生什么事情的一些提示。你有root过的手机吗?/system/bin 中有 mv 和 cp 命令吗?最后,如果您的手机有busybox,您可以尝试使用busybox。也许你应该首先请求 root 权限才能执行此操作......