如何在Android中以编程方式获取SharedPreferences的所有密钥?
如何获得SharedPreferences所有密钥,而不是仅偏好密钥的值? 
 prefA = getSharedPreferences("MyAttack", MODE_PRIVATE); prefB= getSharedPreferences("MySkill", MODE_PRIVATE); 
	
  SharedPreferences有方法getAll() ,它返回一个Map<String, ?> 。 在Map中,您可以使用keySet()和entrySet()轻松检索键和键/值映射: 
 Map<String, ?> allEntries = prefA.getAll(); for (Map.Entry<String, ?> entry : allEntries.entrySet()) { Log.d("map values", entry.getKey() + ": " + entry.getValue().toString()); } 
你可以做的是使用SharedPreferences的getAll()方法并获得Map中的所有值,然后你可以很容易地迭代它们:
 Map<String,?> keys = prefs.getAll(); for(Map.Entry<String,?> entry : keys.entrySet()){ Log.d("map values",entry.getKey() + ": " + entry.getValue().toString()); } 
有关更多信息,可以使用此链接检查PrefUtil.java的dump()实现。
 使用android.content.SharedPreferences的getAll()方法。 
 Map<String, ?> map = sharedPreferences.getAll(); 
 查看getAll()方法的下面的代码 
 Map<String, ?> prefsMap = prefA.getAll(); for (Map.Entry<String, ?> entry: prefsMap.entrySet()) { Log.v("SharedPreferences", entry.getKey() + ":" + entry.getValue().toString()); } 
尽pipe@Blackbelt的回答在这里很受欢迎,但我认为这并不是针对这个问题。 (这个问题并不令人惊讶,因为这个问题混合了首选项名称和关键字的术语。)我想问的是如何找出哪些共享的首选项实例已经创build – 如果名称是dynamic创build的,可能会感兴趣。
这里有两个策略:
- 
创build另一个共享首选项“元”实例,其中所有创build的共享首选实例通过为元首选项添加一个键/值对来注册 – 密钥是共享前导名称,值是任意值,例如 true。getSharedPreferences( DYNAMIC_PREFS_NAME, 0 ) .edit().put*(*).apply(); getSharedPreferences( "meta_prefs_index", 0 ) .edit().putBoolean( DYNAMIC_PREFS_NAME, true).apply();要获得由您创build的所有共享的prefences,请使用meta首选项并按照@Blackbelt的答案。 
- 
共享首选项有一个备份文件,它存储在名为 YOUR_PREFS_NAME.xml文件夹/data/data/YOUR_PACKAGE_NAME/shared_prefs。因此,您可以查看该共享首选项文件的目录。 但要小心,可能有共享的喜好文件,而不是由您的逻辑创build! 因此,我会坚持第一种方法。