如何使用Android Studio查看共享首选项文件?

Jay*_*ser 85 android sharedpreferences android-studio

我正在使用共享首选项来存储我的应用程序的某些值.我想看看信息实际存储在手机上的文件.我在Eclipse上找到了很多方法,但是我在Android Studio上进行调试.我的手机扎根了.我读到有root权限对于读取这些类型的文件很重要.如果没有办法,那么我将查找如何通过我的程序访问信息然后将其输出到log cat.但是,希望我可以直接在手机上查看文件,因为它更简单.谢谢.

Geo*_*ima 84

在Android Studio中,启动Android Device Monitor,转到文件资源管理器,然后浏览"/ 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
Run Code Online (Sandbox Code Playgroud)

之后,您可以使用adb从/ sdcard目录中提取文件.

  • 实际上,您可以从没有root的模拟器中获取此信息,如果您可以通过这种方式进行调试.如果您使用的是物理设备,则需要root. (4认同)
  • 在AndroidStudio的右下角查找设备文件浏览器。它将使您轻松访问设备文件系统 (3认同)
  • 第二种方法适用于非root设备.当您将文件复制到SD卡上,你可以退出亚洲开发银行和亚洲开发银行跑拉"/ SD卡/ your_preferences_file",你会得到你的当前目录中的XML文件,您可以检查. (2认同)
  • 使用设备文件资源管理器,无需root访问权限即可访问共享首选项。 (2认同)

Mak*_*aev 46

更新:翻转者

Flipper是facebook的新选择.它有更多的功能,但在写作时只能用于Mac,配置稍微困难,缺乏数据库调试,同时提供极端增强的布局检查器

Stetho

在应用程序处于调试模式时,您可以使用http://facebook.github.io/stetho/访问共享首选项.无根

特征:

  1. 查看和编辑共享偏好
  2. 查看和编辑sqLite数据库
  3. 查看视图heirarchy
  4. 监控http网络请求
  5. 从设备的屏幕查看流
  6. 和更多....

在此输入图像描述

基本设置:

  1. 在build.gradle中添加 compile 'com.facebook.stetho:stetho:1.5.0'
  2. 在应用程序的onCreate()中添加 Stetho.initializeWithDefaults(this);
  3. 在您的PC上的Chrome中转到chrome:// inspect /

您也可以使用@Jeffrey建议:

  • 打开设备文件资源管理器(屏幕右下角)
  • 转到data/data/com.yourAppName/shared_prefs


phn*_*mnn 42

作为Android Studio 3.x一部分的设备文件资源管理器非常适合探索您的首选项文件,缓存项或数据库.

  1. 共享首选项/数据/数据// shared_prefs目录

在此输入图像描述

它看起来像这样

在此输入图像描述

要打开设备文件资源管理器:

单击视图>工具窗口>设备文件资源管理器,或单击工具窗口栏中的设备文件资源管理器按钮.

在此输入图像描述

  • 打开设备文件资源管理器(屏幕右下角). (10认同)
  • 是否可以编辑并保存文件? (3认同)

cYr*_*ten 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.
Run Code Online (Sandbox Code Playgroud)


Nir*_*jan 9

Android Studio - >设备文件资源管理器(右下角) - >数据 - >数据 - > {package.id} - > shared-prefs

注意:您需要将移动设备连接到android studio,并且所选应用程序应处于调试模式


Rea*_*hed 8

这是一篇旧帖子,但我在这里应该提出一个图形答案,因为问题是关于SharedPreferences.xml使用Android Studio 查看.所以这就是它.

转到工具 - > Android设备监视器.单击打开设备监视器.

在此输入图像描述

然后,您需要在设备监视器中选择"文件资源管理器"选项卡.找到数据文件夹并在其中找到另一个数据文件夹.它将包含一个具有应用程序包名称的文件夹,并且会有所需的文件夹SharedPreferences.xml.

在此输入图像描述

选择SharedPreferences.xml文件,然后使用上图中右上角标记的按钮将文件拉出并保存到计算机中.

我使用过设备模拟器.

  • 感谢您的帖子,我了解了 https://developer.android.com/studio/debug/device-file-explorer,这是您在此处解释的新方法。 (2认同)

小智 6

preference在android studio中打开共享

从右侧打开设备资源管理器文件-数据>数据>>shared_prefs

找到附加图片以获取更多描述

  • 附件图片在哪里 (3认同)

nee*_*yas 6

在设备文件资源管理器中遵循以下路径:-

/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml
Run Code Online (Sandbox Code Playgroud)


小智 5

另一种简单的方法是在手机上使用root Explorer应用程序.

然后转到/data/data/package name/shared preferences folder/name of your preferences.xml,您可以使用ES File explorer,然后转到root您的设备,而不是sd card.