【问题标题】:View an Android App's shared preferences?查看 Android 应用的共享偏好设置?
【发布时间】:2025-12-05 16:20:10
【问题描述】:

当我在 Eclipse 中处理我的应用程序时,有没有办法在模拟器中调试应用程序时查看我对应用程序的共享首选项所做的更改?提前致谢

【问题讨论】:

    标签: android debugging sdk sharedpreferences preferences


    【解决方案1】:

    在模拟器上运行 --> 进入文件资源管理器 --> 可以看到 data/data/yourapplication 的 package/Sharedpreferences.xml

    【讨论】:

    • 该方法需要设备root。
    • 并非如此,如果 androidmanifest.xml 文件中的 allowBackUp 设置为 false,某些应用程序可以允许提取其数据。
    • 借助 adb backup 命令,可以提取应用程序的数据。
    【解决方案2】:

    在模拟器中运行项目,然后从 Eclipse 中选择菜单 Windows-> 打开透视图 ->DDMS。
    从选项卡设备中,选择模拟器名称,然后转到文件资源管理器,展开数据->数据->您的软件包名称,您应该会看到共享参考 xml 文件(仅适用于模拟器或根设备)。最后,将此文件导出到 windows。
    http://developer.android.com/tools/debugging/ddms.html
    更新
    另一种方式,您可以收听共享偏好更改:

    SharedPreferences.OnSharedPreferenceChangeListener prefListener = 
    new SharedPreferences.OnSharedPreferenceChangeListener() {
      public void onSharedPreferenceChanged(SharedPreferences prefs,String key) {
    if (key.equals("YourKey")) 
         {
              //Get this
         } 
     }
    
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);          
    preferences.registerOnSharedPreferenceChangeListener(prefListener);
    

    SharedPreferences.onSharedPreferenceChangeListener not being called consistently

    【讨论】:

    • 是的,但该方法仅适用于模拟器或 adb 以 root 身份运行的设备;否则您将需要使用 run-as 工具或让应用程序本身导出数据。
    • 我知道,我推荐这种方式,因为taormania想在他的模拟器中看到。
    • 要从 DDMS 的角度轻松导出文件,只需单击“拉动”按钮——它看起来像一个带有红色箭头指向左侧的软盘。
    • 是否可以查看正在生产中的应用共享首选项? (希望不会)
    • @MicroR 如果设备被植根,答案是肯定的(因为用户对植根设备拥有完全权限,尤其是访问系统文件)。如果你想要安全,你可以试试这个github.com/scottyab/secure-preferences。这个库有助于加密保存在 SharedPreference 中的数据
    最近更新 更多