0

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

首选项文件位于 /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");

权限未修改。这是为什么?

谢谢!

4

2 回答 2

1

我的猜测是运行的每个命令exec()都是在单独的本机进程中执行的。因此,您的su命令不会影响对exec().

试试这个:

Runtime.getRuntime().exec("su; chmod 777 /data/data/my.package/shared_prefs/my_preferences.xml");
于 2013-04-10T08:47:10.483 回答
0
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
}
于 2013-04-10T10:02:22.303 回答