我需要访问其他应用程序的共享首选项文件。 (该设备已植根!)目前我似乎面临着许可问题。这是我运行的当前代码:
Context con = createPackageContext("com.sam.sample", CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPref = con.getSharedPreferences("namefile", MODE_PRIVATE);
Map data = sharedPref.getString("name", "");
Log.d("Name", "name:" + name);
当我运行此代码时,我收到以下错误:
未经许可尝试读取偏好设置文件 /data/data/com.sam.sample/shared_prefs/namefile.xml
我还尝试运行su
命令,但我不希望通知用户我希望在XML文件上获得chmod 775
的读取权限。
感谢任何帮助。
答案 0 :(得分:2)
在" com.sam.sample"中创建SharedPreference时执行此操作它应该使用Context.MODE_WORLD_READABLE模式创建。所以如果你有" com.sam.sample"的代码应用程序,它应该看起来像下面
SharedPreferences prefs = getSharedPreferences("namefile",
Context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("name", strShareValue);
editor.commit();
另请注意,建议不要将模式更改为Context.MODE_WORLD_READABLE,因为这可能会导致安全漏洞。从NOS开始,这将抛出SecurityException。更多信息: -
https://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE
理想情况下应该使用ContentProvider。
例如,您的ContentProvider的查询功能可以是
MatrixCursor cursor = new MatrixCursor(new String[] { "name" }, 1);
cursor.addRow(new Object[] { readSharedPreference() });
return cursor;