为了调试目的,我需要访问应用程序的共享首选项文件。据我所知,我应该在 /data/... 中找到这个文件,但由于权限不足,我无法访问 /data 文件夹。这正常吗?除了从应用程序内部读取之外,还有什么办法可以访问该文件吗?我的手机没有被Root,我也不想Root它。 感谢任何提示!
为了调试目的,我需要访问应用程序的共享首选项文件。据我所知,我应该在 /data/... 中找到这个文件,但由于权限不足,我无法访问 /data 文件夹。这正常吗?除了从应用程序内部读取之外,还有什么办法可以访问该文件吗?我的手机没有被Root,我也不想Root它。 感谢任何提示!
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在您的清单文件中设置
private void saveSharedPreferences()
{
// create some junk data to populate the shared preferences
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor prefEdit = prefs.edit();
prefEdit.putBoolean("SomeBooleanValue_True", true);
prefEdit.putInt("SomeIntValue_100", 100);
prefEdit.putFloat("SomeFloatValue_1.11", 1.11f);
prefEdit.putString("SomeStringValue_Unicorns", "Unicorns");
prefEdit.commit();
// BEGIN EXAMPLE
File myPath = new File(Environment.getExternalStorageDirectory().toString());
File myFile = new File(myPath, "MySharedPreferences");
try
{
FileWriter fw = new FileWriter(myFile);
PrintWriter pw = new PrintWriter(fw);
Map<String,?> prefsMap = prefs.getAll();
for(Map.Entry<String,?> entry : prefsMap.entrySet())
{
pw.println(entry.getKey() + ": " + entry.getValue().toString());
}
pw.close();
fw.close();
}
catch (Exception e)
{
// what a terrible failure...
Log.wtf(getClass().getName(), e.toString());
}
}
在未root的手机上,很遗憾无法很好地访问/data文件夹。您可以尝试使用MODE_WORLD_READABLE
创建文件:
SharedPreferences myPrefs = this.getSharedPreferences("prefs", MODE_WORLD_READABLE);
然后尝试使用adb pull
获取文件到桌面。
adb pull /data/data/<packagename>/shared_prefs/prefs.xml
但你的情况可能会有所不同。
您可以使用stetho轻松访问和修改SharedPreferences数据。请点击下面提供的链接将其添加到您的Android项目中并查看数据。