Android: Récupération des préférences partagées d'une autre application

J'ai une application de paramètres à partir de laquelle je dois récupérer d'autres préférences d'applications, mais je n'ai pas les détails des clés, comment puis-je récupérer toutes les clés et valeurs disponibles dans cette préférence?

Merci, Swathi

  • Changer de préférence - Manipuler à la fois surPreferenceChange et onPreferenceClick
  • Comment remplir ListPreference de façon dynamique lorsque OnPreferenceClick est déclenché?
  • Comment ouvrir AlertDialog à partir de l'écran de préférence?
  • Nested PreferenceScreens sous une liste dynamique de préférences sur Android
  • Paramétrage de la préférence UI Champ sommaire à la valeur de la préférence
  • TimePicker dans PreferenceScreen
  • La LED de notification Android n'utilise pas ma couleur
  • Fichier de préférences d'utilisateur vs Fichier de préférences d'application
  • 6 Solutions collect form web for “Android: Récupération des préférences partagées d'une autre application”

    En supposant que la préférence est WORLD_READABLE, cela pourrait fonctionner:

    final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>(); Context myContext = createPackageContext("com.example", Context.MODE_WORLD_WRITEABLE); // where com.example is the owning app containing the preferences SharedPreferences testPrefs = myContext.getSharedPreferences ("test_prefs", Context.MODE_WORLD_READABLE); Map<String, ?> items = testPrefs .getAll(); for(String s : items.keySet()){ //do somthing like String value= items.get(s).toString()); } 

    D'accord! En utilisant ce code dans l'Application 1 (avec le nom du package est "com.sharedpref1") pour stocker des données avec des Préférences Partagées.

     SharedPreferences prefs = getSharedPreferences("demopref", Context.MODE_WORLD_READABLE); SharedPreferences.Editor editor = prefs.edit(); editor.putString("demostring", strShareValue); editor.commit(); 

    Et en utilisant ce code dans Application 2 pour obtenir des données à partir de Préférences partagées dans Application 1. Nous pouvons l'obtenir car nous utilisons MODE_WORLD_READABLE dans la application 1:

      try { con = createPackageContext("com.sharedpref1", 0); SharedPreferences pref = con.getSharedPreferences( "demopref", Context.MODE_PRIVATE); String data = pref.getString("demostring", "No Value"); displaySharedValue.setText(data); } catch (NameNotFoundException e) { Log.e("Not data shared", e.toString()); } 

    Pour plus d'informations, visitez cette URL: http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html

    De plus, vous devez ajouter le même android: sharedUserId dans le fichier manifeste de l'application.

    Malheureusement, les docs n'expliquent même pas MODE_WORLD_READABLE et MODE_WORLD_WRITEABLE, au lieu de dire:

    Cette constante a été dépréciée au niveau API 17. Créer des fichiers lisibles dans le monde entier est très dangereux et susceptible de provoquer des trous de sécurité dans les applications. Il est fortement découragé; À la place …

    Étant donné que la dépréciation, la mise en œuvre du partage de fichiers entre des applications avec des préférences partagées peut être trop risquée, même si c'était simple. Je ne suis pas trop préoccupé par les trous de sécurité du mode MODE_WORLD_READABLE dans les applications de jeux où je souhaite simplement transférer des caractères d'une application à l'autre. C'est dommage qu'ils aient déprécié les deux modes de partage.

    Cela peut fonctionner si nous voulons lire la valeur de la percée à partir d'autres applications / pkg / process. Mais il y a quelque chose de mal dans la réponse de jkhouw1:

     Context myContext = createPackageContext("com.example", Context.MODE_WORLD_WRITEABLE); 

    CA devrait etre :

     Context myContext = createPackageContext("com.example", Context.CONTEXT_IGNORE_SECURITY); 

    Cependant, CONTEXT_IGNORE_SECURITY et MODE_WORLD_WRITEABLE avec la même valeur de "int 2" Du tout, merci pour cette question et réponses.

    Il est simple de récupérer les données de préférences partagées dans les magasins d'une application sur une autre application.

    Étape 1: ajoutez le même android:sharedUserId="android.uid.shared" dans les fichiers de manifestation de chaque application.

    Étape 2: Application de la valeur de magasin1

      SharedPreferences preferences = context.getSharedPreferences("token_id", Context.MODE_WORLD_READABLE); Editor editor = preferences.edit(); editor.putString("shared_token", encryptedValue); Log.e("aaa *** shared_token : ", encryptedValue.toString()); editor.commit(); 

    Étape 3: Obtenez de la valeur de l'application2

     Context con = null; try { con = createPackageContext("application2 package name", Context.CONTEXT_IGNORE_SECURITY); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } try { if (con != null) { SharedPreferences pref = con.getSharedPreferences( "token_id", Context.MODE_WORLD_READABLE); String data = pref.getString("shared_token", ""); Log.d("msg", "Other App Data: " + data); } else { Log.d("msg", "Other App Data: Context null"); } } catch (Exception e) { e.printStackTrace(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.