权限被拒绝尝试在Android OS中启动脚本执行

问题描述 投票:0回答:1

在启动Android OS中的bash shell脚本时遇到麻烦。使用Android Studio和Google Pixel模拟器。在脚本执行中获得“权限被拒绝”。该脚本的权限为“ 755”。如果我在这里遇到问题,请告诉我。注意-当我这样做时:%adb shell%run-as com.example.myapplication%./getinfo.sh。 运行正常。当脚本在Android模拟器中的应用程序的Java代码中启动时,它不会运行。如果我在这里遇到问题,请告诉我。 谢谢!

相关的Java代码-String command="/data/data/com.example.myapplication/getinfo.sh"; ProcessBuilder builder = new ProcessBuilder(command); Process p = builder.start(); p.waitFor();。logcat列出的错误是-05-27 13:37:46.588 9348 9348 I System.out:-命令= / data / data / com.example.myapplication / getinfo.sh ^ M。05-27 13:37:46.598 9348 9348 W System.err:java.io.IOException:无法运行程序“ /data/data/com.example.myapplication/getinfo.sh”:error = 13,权限被拒绝^ M。05-27 13:37:46.598 9348 9348 W System.err:位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)^ M。05-27 13:37:46.598 9348 9348 W System.err:at com.example.myapplication.MainActivity $ 1.onClick(MainActivity.java:227)^ M。05-27 13:37:46.598 9348 9348 W System.err:位于android.view.View.performClick(View.java:7125)^ M。05-27 13:37:46.598 9348 9348 W System.err:at android.view.View.performClickInternal(View.java:7102)^ M05-27 13:37:46.598 9348 9348 W System.err:at android.view.View.access $ 3500(View.java:801)^ M。05-27 13:37:46.598 9348 9348 W System.err:at android.view.View $ PerformClick.run(View.java:27336)^ M。05-27 13:37:46.598 9348 9348 W System.err:at android.os.Handler.handleCallback(Handler.java:883)^ M。05-27 13:37:46.598 9348 9348 W System.err:位于android.os.Handler.dispatchMessage(Handler.java:100)^ M。05-27 13:37:46.598 9348 9348 W System.err:at android.os.Looper.loop(Looper.java:214)^ M05-27 13:37:46.598 9348 9348 W System.err:位于android.app.ActivityThread.main(ActivityThread.java:7356)^ M。05-27 13:37:46.598 9348 9348 W System.err:at java.lang.reflect.Method.invoke(Native Method)^ M05-27 13:37:46.598 9348 9348 W System.err:at com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:492)^ M。05-27 13:37:46.599 9348 9348 W System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)^ M05-27 13:37:46.599 9348 9348 W System.err:原因:java.io.IOException:error = 13,权限被拒绝^ M。05-27 13:37:46.599 9348 9348 W System.err:at java.lang.UNIXProcess.forkAndExec(Native Method)^ M。05-27 13:37:46.599 9348 9348 W System.err:at java.lang.UNIXProcess。(UNIXProcess.java:133)^ M。05-27 13:37:46.599 9348 9348 W System.err:at java.lang.ProcessImpl.start(ProcessImpl.java:141)^ M。05-27 13:37:46.599 9348 9348 W System.err:位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)^ M。

java android
1个回答
0
投票

我终于可以通过设置在Android上执行脚本:

ProcessBuilder pb = new ProcessBuilder();
pb.command("/system/bin/sh","test.sh");

pb.redirectErrorStream(true);
File workingDirectory = new File(localPath);
pb.directory(workingDirectory);  //set the working directory for this process

Process process = pb.start();

where "localPath" is passed in after being determined via:

Context c = getApplicationContext();
final String localPath=c.getFilesDir().getPath()

虽然这是一个好步骤,但现在我发现我无法运行导入到/data/data/com.example.myapplication的工作区中的任何二进制文件。为此将开始新的帖子。

© www.soinside.com 2019 - 2024. All rights reserved.