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; 
  • ¿Cómo escuchar los cambios de preferencia dentro de un archivo PreferenceFragment?
  • ¿Cuál es la mejor manera de guardar el contenido de una ArrayList?
  • Nube de Android - Administrador de copia de seguridad vs unidad
  • SharedPreferences no se guardará / cargará en PreferenciaActividad
  • Preferencias compartidas de Android con múltiples actividades
  • Alternativa a addPreferencesFromResource ya que está obsoleta
  • ¿Está bien para guardar una matriz JSON en SharedPreferences?
  • Android, sharedferencias o almacenamiento interno?
  • NullPointerException getDefaultSharedPreferences ()
  • ¿Copiar / compartir configuraciones entre versiones pagadas / gratuitas de la aplicación para Android?
  • Expectativa de puntero nulo al comprobar si SharedPrefs es igual a Null
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.