首页 文章

删除共享首选项

提问于
浏览
402

如何删除应用程序的SharedPreferences数据?

我正在创建一个使用大量Web服务来同步数据的应用程序 . 出于测试目的,我需要在重新启动应用程序时清除一些SharedPreferences值 .

20 回答

  • 6

    在一行中删除Android共享首选项:-)

    context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
    

    apply 用于非阻塞异步操作:

    this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
    
  • 3

    删除所有首选项:

    SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
    settings.edit().clear().commit();
    

    删除单个首选项:

    SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
    settings.edit().remove("KeyName").commit();
    
  • 101

    如果不必每次都删除它,您可以从以下位置手动删除它:

    设置 - >应用程序 - >管理应用程序 - >(选择您的应用程序) - >清除数据或卸载

    较新版本的Android:

    设置 - >应用程序 - >(选择您的应用程序) - >存储 - >清除数据和清除缓存

  • -5

    要删除特定值:SharedPreferences.Editor.remove()后跟 commit()

    要删除所有 SharedPreferences.Editor.clear() 后跟 commit()

    如果您不在应用程序的主线程中使用它,请考虑使用 apply() .

  • 6

    我的解决方案

    SharedPreferences preferences = getSharedPreferences("Mypref", 0);
    preferences.edit().remove("text").commit();
    
  • 10

    似乎所有解决方案都没有完全正常工作或死亡

    清除活动中的所有SharedPreferences

    PreferenceManager.getDefaultSharedPreferences(getBaseContext()).
          edit().clear().apply();
    

    在onCreate之后从主活动中调用此方法

    注意*我用过

    .apply()
    

    代替

    .commit()
    

    你可以自由选择commit();

  • 145

    即使没有root电话,您也可以使用adb shell执行此操作 . 唯一的问题是app必须是可调试的 .

    run-as <your package name> <command>
    

    例如:

    run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
    

    或者,您可以执行上述操作,但不使用将指导您到应用程序包根目录的命令,并允许您在应用程序的上下文中执行更多命令 .

  • 19
    Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
    editor.clear();
    editor.commit();
    
  • 5

    试试这段代码:

    SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
    SharedPreferences.Editor edit = sharedPreferences.edit();
    edit.clear().commit();
    
  • 757

    在类定义中

    private static final String PREFERENCES = "shared_prefs";
    
    private static final SharedPreferences sharedPreferences  = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
    

    在课堂上

    public static void deleteAllSharePrefs(){
            sharedPreferences.edit().clear().commit();
          }
    
  • 8

    清除所有:

    PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
    
  • 4

    您也可以使用设备手动卸载应用 . 然后,当您重新安装应用程序时,共享首选项已重置 .

  • 2

    从API 24(Nougat)开始,你可以这样做:

    context.deleteSharedPreferences("YOUR_PREFS");
    

    但是,没有向后兼容性,所以如果你支持少于24的东西,坚持:

    context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
    
  • -2
    • 要删除特定值,

    SharedPreferences.Editor remove(String key) 后跟commit()或apply()

    • 要删除所有值,

    SharedPreferences.Editor clear() 后跟commit()或apply()

  • 50

    如果是你的测试 . 您可以使用adb命令 .

    adb shell pm clear <package name>
    
  • 2

    要从任何类集中清除所有SharedPreferences:

    public static SharedPreferences.Editor getEditor(Context context) {
        return getPreferences(context).edit();
    }
    

    然后从任何类:(提交返回布尔值,您可以检查您的首选项是否清除)

    Navigation.getEditor(this).clear().commit();
    

    或者:你可以使用Apply:它返回void Navigation.getEditor(this).clear() . apply();

  • 0

    要从首选项中删除键值对,您可以轻松执行以下操作

    getActivity().getSharedPreference().editor().remove("key").apply();
    

    我还开发了用于轻松操作共享首选项的库 . 您可以找到以下链接

    https://github.com/farruhha/SimplePrefs

  • 6

    2018年更新:

    你可以使用 PowerPreference

    要清除应用程序中所有共享首选项文件中的所有数据,请使用:

    PowerPreference.clearAll()
    

    清除默认文件

    PowerPreference.defult().clear()
    

    按名称清除特定文件

    PowerPreference.name(fileName).clear()
    

    https://github.com/AliEsaAssadi/Android-Power-Preference

  • 3

    您可以 use-> preferences.edit().remove("key").commit(); 从共享首选项中删除已保存的值 .

  • 15

    刚刚今天早上这样做了 . 从命令提示符:

    adb shell
    cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
    rm * // to remove all shared preference files
    rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file
    

    NOTE :这需要一个有根设备,例如现有的Android虚拟设备,Genymotion设备或实际有根的手机/平板电脑等 .

相关问题