gpt4 book ai didi

java - 尝试在 Android 操作系统中启动脚本执行的权限被拒绝

转载 作者:行者123 更新时间:2023-12-01 16:30:26 28 4
gpt4 key购买 nike

在 Android 操作系统中启动 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: -   command=/data/data/com.example.myapplication/getinfo.sh^M.  
05-27 13:37:46.598 9348 9348 W System.err: java.io.IOException: Cannot run program "/data/data/com.example.myapplication/getinfo.sh": error=13, Permission denied^M.
05-27 13:37:46.598 9348 9348 W System.err: at 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: at 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)^M
05-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: at 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)^M
05-27 13:37:46.598 9348 9348 W System.err: at 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)^M
05-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)^M
05-27 13:37:46.599 9348 9348 W System.err: Caused by: java.io.IOException: error=13, Permission denied^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.<init>(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: at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)^M.

最佳答案

我终于能够通过设置在 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 中工作区域的任何二进制文件。将为此开始一个新帖子。

关于java - 尝试在 Android 操作系统中启动脚本执行的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62052879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com