我正在尝试从应用程序中执行脚本。我使用以下命令执行脚本:
try {
Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "sh /data/script.sh" });
proc.waitFor();
} catch (Exception e) {
Log.d("Exceptions", "Exception dropping caches: "+e);
}
权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
每次启动应用程序时,脚本都应该执行。
脚本只包含行
#!/system/bin/sh
touch testFile
但问题是脚本没有被执行 - 至少没有创建文件testFile
。但是,当我将代码更改为{ "su", "-c", "touch /data/testFile" }
时,它就是。
现在,脚本只是一个例子。最终我想要执行一个不同的脚本。
我的股票(5.1.1),Nexus 5,扎根。
我已经尝试过其他线程的不同方法,上面的代码是我至少可以使用{ "su", "-c", "touch /data/testFile" }
创建文件的唯一方法。
任何想法,可能是什么问题?我可能需要其他许可吗?
答案 0 :(得分:0)
这可能是脚本本身的问题。请尝试使用这段代码:
{ "su", "-c", "sh /data/script.sh", "2&>1>/sdcard/scripterror.log" }
然后检查/sdcard/scripterror.log是否有错误。
无论如何,我建议您使用this库来运行带有su的命令,它使用起来更加容易,即使我能理解它(我是一个真正的Java初学者)