Android: Abrufen gemeinsamer Präferenzen anderer Anwendungen

Ich habe eine Einstellungsanwendung, von der ich andere Anwendungspräferenzen abrufen muss, aber ich habe nicht die Details der Schlüssel in ihnen, wie kann ich alle verfügbaren Schlüssel und Werte in dieser Präferenz abrufen?

Danke, Swathi

  • Holen Sie sich Real Time - Not Device Set Zeit in Android
  • Verwenden von ContentProviderOperation zum Aktualisieren und Einfügen von Kontakten
  • Android In-App-Kauf von Plugins?
  • Stoppen Sie Bilder auf sd-Karte aus, die in der Galerie auftaucht?
  • FFMPEG Einblenden und Ausblenden für Overlay
  • Gruppe von Benutzern in Firebase
  • Wie kann ich Android MediaStore Content Provider abfragen, um verwaiste Bilder zu vermeiden?
  • Android drehen Animation zwischen zwei Aktivitäten?
  • Wie man runOnUiThread verwendet, ohne "kann nicht einen statischen Verweis auf die nicht statische Methode" Compiler-Fehler
  • Geben Sie doppelten Wert zu Geopoint in GoogleMap-Overlays
  • Wie man auf den Markt zurückfällt, wenn das Android-benutzerdefinierte URL-Schema nicht behandelt wird?
  • Wie kann ich feststellen, wann eine Android-Anwendung im Emulator läuft?
  • 6 Solutions collect form web for “Android: Abrufen gemeinsamer Präferenzen anderer Anwendungen”

    Angenommen, die Präferenz ist WORLD_READABLE, das könnte funktionieren:

    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()); } 

    Okay! Mit diesem Code in Anwendung 1 (mit Paketname ist "com.sharedpref1"), um Daten mit Shared Preferences zu speichern.

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

    Und mit diesem Code in Anwendung 2, um Daten aus Shared Preferences in Application 1 zu erhalten. Wir können es bekommen, weil wir MODE_WORLD_READABLE in Anwendung 1 verwenden:

      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()); } 

    Weitere Informationen finden Sie unter folgender URL: http://androiddhamu.blogspot.in/2012/03/share-data-across-application-in.html

    Außerdem musst du das gleiche android hinzufügen : sharedUserId in der Manifestdatei der App.

    Leider können die docs jetzt nicht einmal MODE_WORLD_READABLE und MODE_WORLD_WRITEABLE erklären, sondern sagen:

    Diese Konstante wurde in API-Ebene 17 abgeschrieben. Das Erzeugen von Welt lesbaren Dateien ist sehr gefährlich und wird wahrscheinlich Sicherheitslücken in Anwendungen verursachen. Es ist stark entmutigt; Stattdessen … etc

    Da die Abschreibung, die Implementierung von File-Sharing zwischen Apps mit Shared Preferences kann zu riskant sein, obwohl es einfach war. Ich bin nicht sehr mit Sicherheitslücken aus dem MODE_WORLD_READABLE Modus in Spiel-Apps beschäftigt, wo ich nur in der Lage sein soll, Zeichen von einer App in eine andere zu übertragen. Es ist zu schade, dass sie beide Sharing-Modi abgeschrieben haben.

    Es kann funktionieren, wenn wir den Lesewert von anderen app / pkg / process lesen wollen. Aber da ist etwas falsch in der Antwort von jkhouw1:

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

    Es sollte sein :

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

    Obwohl, CONTEXT_IGNORE_SECURITY und MODE_WORLD_WRITEABLE mit dem gleichen Wert von "int 2" Vielen Dank für diese Frage und Antworten.

    Es ist einfach, gespeicherte freigegebene Vorzugsdaten von einer Anwendung auf eine andere Anwendung abzurufen.

    Schritt 1: füge denselben android:sharedUserId="android.uid.shared" in den manifestakten der App.

    Schritt 2: Wert speichern application1

      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(); 

    Schritt 3: Wert von application2 erhalten

     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(); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.