我正在尝试从我的android应用程序运行一个脚本,.sh位于/res/raw文件夹中,该文件夹最终被复制到内部存储中,而根目录设备不是一个选项。
但我面临一个错误:运行exec()时出错。命令:[……]其中原因是java.io.ioexception:权限被拒绝;我已经试着运行bash两天了,但是现在我看不到更多,希望头脑更清醒的人能看到缺少的东西。
我也试过运行chmod 775
脚本(test.sh):
#!/bin/bash
REQUESTDATE=`date "+%Y-%m-%dT%H:%M:%S"`
URL=https://.....
Resp=`curl -v -H "date: $REQUESTDATE" -H "Content-Type: application/json" -X POST -d@my_json.json $URL`
echo $Resp
在我的Android应用程序上:
private void runCommand(){
String pathToScript = getDir("my_scripts",Context.MODE_PRIVATE).getAbsolutePath() + File.separator + "test.sh";
String[] commands = {"bash", "-c", pathToScript};
try{
java.lang.Process process = new ProcessBuilder()
.command(commands)
.directory(new File (getDir("my_scripts",Context.MODE_PRIVATE).getAbsolutePath()))
.redirectErrorStream(true)
.start();
//Read output
StringBuilder output = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = bufferedReader.readLine()) != null){
output.append(line + "\n");
}
if (process.waitFor() == 0){
Log.i(TAG, "Success");
} else{
e.printStackTrace();
}
}catch(IOException e){
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}