2011-12-07 33 views
4

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

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

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

+0

是您的手机扎根?我的猜测是,这种敏感的命令不能作为根用户使用。 – Lennart

+0

我之前添加了Runtime.getRuntime().exe(“su”),但它不起作用。 –

回答

1

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

你没有给chmod(1)明确的路径字符串中的 - 你肯定chmod(1)是:

  • 您的设备上
  • 可与您当前PATH环境变量设置?

您只能更改您拥有的文件的权限;您确定无论您的应用程序的有效用户标识是否拥有SD卡上的文件?最后,Android may have additional security restrictions on changing file permissions。我不太了解Android,但是也许更改文件权限位需要声明操作的清单中的条目,也许只能通过提供的API来完成更改文件权限。

+0

将命令作为'$ su''#chmod 777/sdcard/test.txt'运行,权限可以更改。所以我认为文件路径是正确的。 –

+0

尝试将字符串更改为'“su -c \”chmod 777 /sdcard/test.txt \“”' – sarnold

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 } 

这应该做的伎俩