在应用程序中更改文件权限

时间:2011-12-07 08:38:01

标签: android shell

我尝试在应用程序中更改文件权限。代码如下:

Runtime.getRuntime().exec("chmod 777 /sdcard/test.txt");

此代码不适用于我的应用程序,但没有错误日志。 我还检查了/ system / bin下的shell工具,发现chmod在/ system / bin下,但是其他一些信息显示chmod>工具箱。我不清楚这一点。我的应用程序使用了android:sharedUserId =“android.uid.system”。 如何运行此代码或如何更改文件的权限?非常感谢。

2 个答案:

答案 0 :(得分:2)

Runtime rt = Runtime.getRuntime();
Process proc;
try {
    proc = rt.exec(new String[] { "su", "-c", "chmod 777 " + Constants.filename });
    proc.waitFor();
} catch (Exception e){ //DOSTUFFS }

这应该可以解决问题

答案 1 :(得分:1)

您在测试中使用了路径/sdcard/ - 您的SD卡是否使用支持标准Unix权限的文件系统进行格式化? (FAT没有。)

您没有在字符串中提供chmod(1)的明确路径 - 您确定chmod(1)是:

  • 在您的设备上提供
  • 适用于您当前的PATH环境变量设置?

您只能更改您拥有的文件的权限;你确定你的应用程序的有效用户ID是否拥有SD卡上的文件?

最后,Android may have additional security restrictions on changing file permissions。我不太熟悉Android,但是更改文件权限位可能需要清单中的条目声明操作,也许更改文件权限只能通过提供的API来完成。