Obtener todos los nombres SharedPreferences y todas sus claves?

Estoy haciendo el programa de copia de seguridad, que guardó el teléfono SharedPreferences datos en un archivo de mi propia estructura. Pero no sé cómo enumerarlos todos, que necesito:

Por ejemplo, el programa 2 guardó sus SharedPreferences con los nombres "Program A" y "Program B" . Necesito obtener thay String array contienen estos 2 nombres. Entonces, yo uso getSharedPreferences con "Programa A", necesito obtener todas las claves que el programa ha guardado.

¿Es realmente posible?

EDIT1: No sé qué programas / actividades en el teléfono. Quiero obtener TODAS las keys que guardan todos los programas. Al igual que hacer una copia de seguridad de todos los datos de su teléfono, pero sólo SharedPreferences valores.

Por ejemplo: Su teléfono tiene 10 programas, cada uno crea una SharedPreferences llamada Program 1 a Program 10 (pero por supuesto, cualquier nombre que deseen). Y me gustaría obtener todos estos Program 1 a Program 10 . Entonces, si el Program 1 tiene 5 llaves llamadas la Key 1 a la Key 5 , quiero conseguir estas llaves nombre.

EDIT2: De acuerdo con la guía NikolaMKD , esto es lo que he hecho hasta ahora, pero la lista devuelve todos los programas, con "No Preferences" en toda la línea, incluso en la primera, guardé SharedPreferences con mi actividad:

 public class Test extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences preferences = getSharedPreferences("Test", 1); // No matter what name is: Test or the package name Editor editor = preferences.edit(); editor.putInt("TestKey", 0); editor.commit(); List<ResolveInfo> Temp = getPackageManager().queryIntentActivities( new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_LAUNCHER), 0); String[] App = new String[Temp.size()]; for (int i = 0; i < Temp.size(); i++) { App[i] = Temp.get(i).activityInfo.name; FileReader reader = null; try { reader = new FileReader("/data/data/" + App[i] + "/shared_prefs/" + App[i] + "_preferences.xml"); } catch (FileNotFoundException e) { reader = null; } if (reader != null) App[i] += " (Have Prefereces)"; else App[i] += " (No Prefereces)"; } setListAdapter(new ArrayAdapter<String>(this, R.layout.main, App)); } } 

Obtenga todas las _preferences.xml de

/data/data/(package)/shared_prefs/(package)_preferences.xml

Analizar el XML, en el XML hay nombre para cada clave. Podría haber malinterpretado tu pregunta

No pienses que es posible, No puedes leer otras aplicaciones / datos / datos / carpeta. En el emulador puede leerlos porque tiene acceso root.

Utilice sharedPreference.getAll(); Que devuelve un Map .

Prueba esto:

  Map<String, ?> allPrefs = prefs.getAll(); //your sharedPreference Set<String> set = allPrefs.keySet(); for(String s : set){ LOG.d(TAG, s + "<" + allPrefs.get(s).getClass().getSimpleName() +"> = " + allPrefs.get(s).toString()); } 

Es una buena pregunta, y no creo que haya una manera sencilla de hacerlo. La mejor manera de hacerlo sería almacenar estos nombres en DefaultSharedPreferences o algún tipo de matriz global, o puede recuperar las sharedPreferences de la actividad misma si conoce el ID de recurso de preferencia:

 String packageName = String packageName = context.getPackageName(); Resources resources = context.getResources(); String sharedPrefName = resources.getResourceEntryName(R.id.PREFERENCES_RESOURCE_ID); sharedPrefName = packageName+"_"+sharedPrefName; 
  • ¿Está bien para guardar una matriz JSON en SharedPreferences?
  • Activa / desactiva Toast desde las preferencias compartidas?
  • Android: Mantenga el nombre de usuario en sesión hasta que se cierre la sesión
  • Copia de seguridad de Android 2.2: ¿Cómo hacer copias de seguridad DefaultSharedPreferences?
  • Preferencias compartidas dentro de broadcastreceiver
  • Usar SharedPreferences en modo multiproceso
  • Prueba de unidad de Android: cómo borrar SharedPreferences
  • SharedPreferences Borrar / Guardar
  • ¿Por qué la variable estática de mi aplicación Android a veces se devuelve nula?
  • Preferencia y comprobación de la casilla de verificación si está activada o desactivada
  • Copia de seguridad de SharedPreferences de Android no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.