在Android中修改文件权限,因为代码不起作用

在Android中修改文件权限,因为代码不起作用,android,sharedpreferences,chmod,Android,Sharedpreferences,Chmod,不久前,我创建了一个具有私有共享首选项的应用程序。现在,我正在创建一个相关的应用程序,它需要检查以前的一些应用程序首选项。我面临的问题是,以前的应用程序源代码在一台我下个月才能访问的计算机中。因为我不想等那么久,所以我想,因为我的设备是根设备,我可能可以修改首选项文件权限,以便能够访问它,这样我可以在获得以前的应用程序代码后立即发布这两个应用程序 首选项文件位于/data/data/my.package/shared_prefs中。如果我使用adb shell访问它并使用chmod 777文件权

不久前,我创建了一个具有私有共享首选项的应用程序。现在,我正在创建一个相关的应用程序,它需要检查以前的一些应用程序首选项。我面临的问题是,以前的应用程序源代码在一台我下个月才能访问的计算机中。因为我不想等那么久,所以我想,因为我的设备是根设备,我可能可以修改首选项文件权限,以便能够访问它,这样我可以在获得以前的应用程序代码后立即发布这两个应用程序

首选项文件位于/data/data/my.package/shared_prefs中。如果我使用adb shell访问它并使用chmod 777文件权限将被修改,我可以访问首选项,但最终权限将返回660。我尝试使用以下代码更改它们:

Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("chmod 777 /data/data/my.package/shared_prefs/my_preferences.xml");
权限未被修改。为什么呢


谢谢

我猜从
exec()运行的每个命令都是。因此,您的
su
命令不会影响对
exec()
的第二次调用

请尝试以下方法:

Runtime.getRuntime().exec("su; chmod 777 /data/data/my.package/shared_prefs/my_preferences.xml");

我试过了,但还是不起作用。如果我对两个不同的执行者使用它,我会看到一个祝酒词,说我获得了root权限。如果我像您一样在单个exec中使用它,那么就不会有Toast,文件权限也不会被修改:(错误:
java.io.IOException:Error running exec()。[su;Working Directory:null Environment:null
我刚刚尝试过。文件权限不会被修改,进程永远不会结束。如果我在supprocess.waitFor()之后放置Log.d)应该执行吗?因为我做了,但它从未执行过。我实际上没有根手机,所以无法测试。答案来自。祝你好运John;)非常慢,你应该如何将其用于文件夹?chmod用于文件夹。搜索“chmod recursive”。
try {
    Process suProcess = Runtime.getRuntime().exec("su");
    DataOutputStream suOutputStream = new DataOutputStream(suProcess.getOutputStream());
    suOutputStream
            .writeBytes("chmod 777 /data/data/my.package/shared_prefs/my_preferences.xml\n");
    suOutputStream.flush();
    suOutputStream.writeBytes("exit\n");
    suOutputStream.flush();
    suProcess.waitFor();

} catch (IOException e) {
    // TODO Auto-generated catch block
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
}