String command = "chmod 777 " + path;
Runtime runtime = Runtime.getRuntime();
runtime.exec(command);
解决方案 »
- 如何做到 图片上文下字?
- tabHost 怎么获得 选项卡对象啊 ???
- 无法将源码/package/app/下面的项目修改后push到模拟器里面。提示Read-only file system
- 在线等——想转android开发,之前做.net麻烦高手推荐资料
- eclipse 运行程序后,虚拟器无程序的界面
- Broadcast问题,谁能解释一下啊~~100分
- 重写HorizontalScrollView的问题
- Andriod market PC端困惑吗
- 求教:android 的汉语怎么讲?
- 求大神解答,困扰已久:Android 调用相机返回的data空值问题
- 被引用的类怎么调用引用它的activity
- Android中图片的问题
public void execShell(String cmd){
try{
//权限设置
Process p = Runtime.getRuntime().exec("su");
//获取输出流
OutputStream outputStream = p.getOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
//将命令写入
dataOutputStream.writeBytes(cmd);
//提交命令
dataOutputStream.flush();
//关闭流操作
dataOutputStream.close();
outputStream.close();
}
catch(Throwable t)
{
t.printStackTrace();
}
}
test3()
}private void test3() {
execCommand1("system/bin/xxxx.sh");
} public boolean execCommand1(String cmd) {
Process process = null;
try {
process = Runtime.getRuntime().exec(cmd);
process.waitFor();
} catch (Exception e) {
return false;
} finally {
try {
process.destroy();
} catch (Exception e) {
}
}
return true;
}
用android程序调用的时候,我在manifest里面设置了system权限:android:sharedUserId="android.uid.system",
shell脚本文件在adb里设置了chmod 777权限,
调用脚本的命令:Process proc=Runtime.getRuntime().exec("/system/bin/sh /system/bin/xxxxx.sh");
我的做法和楼下几位说的差不多,但是最终还是调用不成功,继续求问是什么问题
你是root执行的?
你先确定你的sh脚本执行了吗?还是sh脚本里的命令没成功?exec("/system/bin/xxxxx.sh");
不是就可以
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!
execShell(“./xxx.sh”);也是可以的
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!我想执行类似这样的代码:
Process p = Runtime.getRuntime().exec("chmod data/data/com.XXX.XXX"); 改变文件的权限,但是这样改变不了。
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!我想执行类似这样的代码:
Process p = Runtime.getRuntime().exec("chmod data/data/com.XXX.XXX"); 改变文件的权限,但是这样改变不了。1.你写的这条命令就是错的,正确写法:busybox chmod 777 /data/data/com.XXX.XXX
2.如果在重启设备之后,权限又变回去了,那么你就要重新执行该命令,或者你在源码中修改init.xxx.rc文件,使他不会随着重启而改变
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!我想执行类似这样的代码:
Process p = Runtime.getRuntime().exec("chmod data/data/com.XXX.XXX"); 改变文件的权限,但是这样改变不了。1.你写的这条命令就是错的,正确写法:busybox chmod 777 /data/data/com.XXX.XXX
2.如果在重启设备之后,权限又变回去了,那么你就要重新执行该命令,或者你在源码中修改init.xxx.rc文件,使他不会随着重启而改变
在CMD里面用chmod data/data/com.XXX.XXX就可以改权限啊,用你说的busybox chmod 777 /data/data/com.XXX.XXX不可以改啊。
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!我想执行类似这样的代码:
Process p = Runtime.getRuntime().exec("chmod data/data/com.XXX.XXX"); 改变文件的权限,但是这样改变不了。1.你写的这条命令就是错的,正确写法:busybox chmod 777 /data/data/com.XXX.XXX
2.如果在重启设备之后,权限又变回去了,那么你就要重新执行该命令,或者你在源码中修改init.xxx.rc文件,使他不会随着重启而改变
在CMD里面用chmod data/data/com.XXX.XXX就可以改权限啊,用你说的busybox chmod 777 /data/data/com.XXX.XXX不可以改啊。
chmod ??? com.XXX.XXX ------>???表示的是权限
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!我想执行类似这样的代码:
Process p = Runtime.getRuntime().exec("chmod data/data/com.XXX.XXX"); 改变文件的权限,但是这样改变不了。1.你写的这条命令就是错的,正确写法:busybox chmod 777 /data/data/com.XXX.XXX
2.如果在重启设备之后,权限又变回去了,那么你就要重新执行该命令,或者你在源码中修改init.xxx.rc文件,使他不会随着重启而改变
在CMD里面用chmod data/data/com.XXX.XXX就可以改权限啊,用你说的busybox chmod 777 /data/data/com.XXX.XXX不可以改啊。
chmod ??? com.XXX.XXX ------>???表示的是权限不好意思,我刚才那个写错了,chmod 777 data/data/com.XXX.XXX就可以改权限啊,用你说的busybox chmod 777 /data/data/com.XXX.XXX不可以改啊。这两句在代码里执行都没有成功,前一句在命令行执行成功了,你说的那句没有执行成功!
意思就是你可以将你的*.sh文件里的命令
一条条的通过该方面执行
比如:
execShell("cd /");
execShell("busybox touch xxx.txt");
那么你就会在/目录下找到一个xxx.txt文件,其他的拷贝,粘贴,查询的什么命令同样如此!我想执行类似这样的代码:
Process p = Runtime.getRuntime().exec("chmod data/data/com.XXX.XXX"); 改变文件的权限,但是这样改变不了。1.你写的这条命令就是错的,正确写法:busybox chmod 777 /data/data/com.XXX.XXX
2.如果在重启设备之后,权限又变回去了,那么你就要重新执行该命令,或者你在源码中修改init.xxx.rc文件,使他不会随着重启而改变
在CMD里面用chmod data/data/com.XXX.XXX就可以改权限啊,用你说的busybox chmod 777 /data/data/com.XXX.XXX不可以改啊。
chmod ??? com.XXX.XXX ------>???表示的是权限不好意思,我刚才那个写错了,chmod 777 data/data/com.XXX.XXX就可以改权限啊,用你说的busybox chmod 777 /data/data/com.XXX.XXX不可以改啊。这两句在代码里执行都没有成功,前一句在命令行执行成功了,你说的那句没有执行成功!
那应该是你的系统里面没有使用busybox工具,现在不要纠结于这个问题,搞的现在忘了一开始想要解决什么问题了!
CommandResult result = ShellUtils.execCommand(commands, true);具体可以看看这篇文章介绍 http://www.trinea.cn/android/android-java-execute-shell-commands/
我现在也出现这个问题,cmd下chmod能成功,java代码执行没抛异常,但是文件权限没改变。都没人有办法么?网上那些权限修改的方法,都是坑爹的么?有木有成功过啊