我使用共享偏好设置为我的应用存储特定值。我想看看信息实际存储在手机上的文件。我在Eclipse上找到了许多方法,但是我在Android Studio上进行了调试。我的手机扎根了。我读到有root权限对于读取这些类型的文件很重要。如果没有办法,那么我将查找如何通过我的程序访问信息,然后将其输出到log cat。但是,希望我可以直接在手机上查看文件,因为它更简单。感谢。
答案 0 :(得分:74)
在Android Studio中,启动Android设备监视器,转到文件资源管理器,然后浏览" / data / data /<您的包名称> / shared_prefs /"。你会在那里找到XML ......你也可以复制它以供检查。
如果您使用的是非root设备,则无法直接在Android Studio中执行此操作。但是,只要您的应用程序是调试版本,就可以使用adb shell
访问该文件。
adb shell
run-as your.app.id
chmod 777 shared_prefs/your.app.id_preferences.xml
exit # return to default user
cp /data/data/your.app.id/shared_prefs/your.app.id_preferences.xml /sdcard
之后,您可以使用adb从/ sdcard目录中提取文件。
答案 1 :(得分:39)
在应用程序处于调试模式时,您可以使用http://facebook.github.io/stetho/访问共享首选项。 无根
特点:
基本设置:
compile 'com.facebook.stetho:stetho:1.5.0'
Stetho.initializeWithDefaults(this);
Flipper是来自facebook的新版本。它有更多的功能,但是当时写入只适用于Mac,配置稍微困难,缺乏数据库调试,同时提供极端增强的布局检查器
- 打开设备文件资源管理器(屏幕右下角)
- 转到data / data / com.yourAppName / shared_prefs
答案 2 :(得分:27)
Android Studio 3.x 的设备文件资源管理器非常适合浏览您的首选项文件,缓存项或数据库。
看起来像这样
要打开设备文件资源管理器,请执行以下操作:
单击视图>工具窗口>设备文件资源管理器,或单击工具窗口栏中的设备文件资源管理器按钮。
答案 3 :(得分:14)
您可以简单地创建一个特殊的Activity用于调试目的:
@SuppressWarnings("unchecked")
public void loadPreferences() {
// create a textview with id (tv_pref) in Layout.
TextView prefTextView;
prefTextView = (TextView) findViewById(R.id.tv_pref);
Map<String, ?> prefs = PreferenceManager.getDefaultSharedPreferences(
context).getAll();
for (String key : prefs.keySet()) {
Object pref = prefs.get(key);
String printVal = "";
if (pref instanceof Boolean) {
printVal = key + " : " + (Boolean) pref;
}
if (pref instanceof Float) {
printVal = key + " : " + (Float) pref;
}
if (pref instanceof Integer) {
printVal = key + " : " + (Integer) pref;
}
if (pref instanceof Long) {
printVal = key + " : " + (Long) pref;
}
if (pref instanceof String) {
printVal = key + " : " + (String) pref;
}
if (pref instanceof Set<?>) {
printVal = key + " : " + (Set<String>) pref;
}
// Every new preference goes to a new line
prefTextView.append(printVal + "\n\n");
}
}
// call loadPreferences() in the onCreate of your Activity.
答案 4 :(得分:8)
Android Studio - &gt;设备文件资源管理器(右下角) - &gt;数据 - &gt;数据 - &gt; {package.id} - &gt;共享首选项
注意:您需要将移动设备连接到android studio,并且所选应用程序应处于调试模式
答案 5 :(得分:7)
这是一篇旧帖子,但我在这里应该提出一个图形答案,因为问题是关于使用Android Studio查看SharedPreferences.xml
。所以这就是它。
转到工具 - &gt; Android设备监视器。单击打开设备监视器。
然后,您需要在设备监视器中选择“文件资源管理器”选项卡。找到数据文件夹并在其中找到另一个数据文件夹。它将包含一个具有应用程序包名称的文件夹,并且将包含所需的SharedPreferences.xml
。
选择SharedPreferences.xml
文件,然后使用上图中右上角标记的按钮将文件拉出并保存到计算机中。
我使用过设备模拟器。
答案 6 :(得分:5)
另一种简单的方法是在手机上使用root Explorer应用程序。
然后转到/data/data/package name/shared preferences folder/name of your preferences.xml
,您可以使用ES File explorer,然后转到设备的root
,而不是sd card
。
答案 7 :(得分:3)
如果您有多个Shared Preference
个文件,那么这里是展示所有文件的好方法,但您也可以传入1个文件名。
loadSharedPrefs("pref_name");
loadSharedPrefs("shared_pref1", "shared_pref2", "shared_pref3");
选择以下其中一项以满足您的需求......
public void loadSharedPrefs(String ... prefs) {
// Logging messages left in to view Shared Preferences. I filter out all logs except for ERROR; hence why I am printing error messages.
Log.i("Loading Shared Prefs", "-----------------------------------");
Log.i("----------------", "---------------------------------------");
for (String pref_name: prefs) {
SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
for (String key : preference.getAll().keySet()) {
Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
preference.getString(key, "error!"));
}
Log.i("----------------", "---------------------------------------");
}
Log.i("Finished Shared Prefs", "----------------------------------");
}
public void loadSharedPrefs(String ... prefs) {
// Define default return values. These should not display, but are needed
final String STRING_ERROR = "error!";
final Integer INT_ERROR = -1;
// ...
final Set<String> SET_ERROR = new HashSet<>(1);
// Add an item to the set
SET_ERROR.add("Set Error!");
// Loop through the Shared Prefs
Log.i("Loading Shared Prefs", "-----------------------------------");
Log.i("------------------", "-------------------------------------");
for (String pref_name: prefs) {
SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
Map<String, ?> prefMap = preference.getAll();
Object prefObj;
Object prefValue = null;
for (String key : prefMap.keySet()) {
prefObj = prefMap.get(key);
if (prefObj instanceof String) prefValue = preference.getString(key, STRING_ERROR);
if (prefObj instanceof Integer) prefValue = preference.getInt(key, INT_ERROR);
// ...
if (prefObj instanceof Set) prefValue = preference.getStringSet(key, SET_ERROR);
Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
String.valueOf(prefValue));
}
Log.i("------------------", "-------------------------------------");
}
Log.i("Loaded Shared Prefs", "------------------------------------");
}
}
我的Shared Preference
值都是String
,但这是使用上述两种方法之一的输出...
I/Loading Shared Prefs﹕ -----------------------------------
I/------------------﹕ -------------------------------------
I/Shared Preference : FAVORITE - 135397﹕ Jurassic World
I/Shared Preference : FAVORITE - 87101﹕ Terminator Genisys
I/Shared Preference : FAVORITE - 177677﹕ Mission: Impossible – Rogue Nation
I/------------------﹕ -------------------------------------
I/Shared Preference : WATCHED - 177677﹕ Mission: Impossible – Rogue Nation
I/Shared Preference : WATCHED - 157336﹕ Interstellar
I/Shared Preference : WATCHED - 135397﹕ Jurassic World
I/Shared Preference : WATCHED - 87101﹕ Terminator Genisys
I/------------------﹕ -------------------------------------
I/Shared Preference : WILL_WATCH - 211672﹕ Minions
I/Shared Preference : WILL_WATCH - 102899﹕ Ant-Man
I/------------------﹕ -------------------------------------
I/Loaded Shared Prefs﹕ ------------------------------------
答案 8 :(得分:3)
在 Android Studio 3 中:
答案 9 :(得分:2)
插入一些数据后,在模拟器中运行应用程序,只需关闭应用程序。
现在打开DDMS或Android Monitor并选择您的模拟器,在右侧您可以看到文件资源管理器,在其中查找Data文件夹并查找您创建的应用程序包,您可以找到共享首选项文件打开它,您可以看到XML文件,单击它并单击右上角设备按钮中的拉文件。
XML文件将保存在您想要的位置,然后您可以使用任何编辑器(如记事本++)打开它,并可以查看您输入的数据。
答案 10 :(得分:1)
我总是觉得这些命令在控制台中很有用:
找到正确的文件名
adb shell
ls /data/data/com.your.package/shared_prefs
将文件存入本地目录
adb pull /data/data/com.your.package/shared_prefs/the_file_you_want $local_dir
在$local_dir
。
答案 11 :(得分:0)
如果您使用的是仿真器,则可以使用以下命令在终端上查看sharedPrefs.xml
文件:
adb root
cat /data/data/<project name>/shared_prefs/<xml file>
之后,如果您不想让虚拟设备保持根目录,则可以使用adb unroot
。
答案 12 :(得分:0)
要在android studio中打开共享的(?i)(CREATE TABLE|TIMESTAMP)
从右侧打开设备资源管理器文件-data> data>> shared_prefs
找到附件图像以获取更多描述
答案 13 :(得分:0)
在设备文件资源管理器中,遵循以下路径:-
/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml
答案 14 :(得分:0)
Mac 中 Android Emulator 的共享首选项文件路径
/Users/"UserName"/Documents/AndroidStudio/DeviceExplorer/"EmulatorName"/data/data/com.app.domain/shared_prefs/