2010-05-11 5 views
8

Hoffen Sie, dass Sie meine Frage mit meinem grundlegenden Englisch verstehen ...Problemumgehung zum Speichern einer Absicht in den Einstellungen?

In meiner Anwendung erlaube ich dem Benutzer, einen Knopf zu haben, der die Anwendung seiner Wahl startet. Ich habe kein Problem damit, eine Liste aller installierten Apps zu erstellen, den Intent abzurufen und die ausgewählte App zu starten.

Aber ich möchte die entsprechende Absicht in den Einstellungen für die nächste Zeit sparen die Benutzer meine Anwendung verwenden, aber die Einstellungen nur erlauben Sie mir Grunddatentyp (Integer, Boolean, Strings, etc.)

zu sparen Also, meine Frage ist, wie man eine Absicht auf intelligente Weise speichert.

Ich hoffe, Sie können mir helfen, eine Lösung zu finden.

+0

diese Lösung Versuchen Sie basiert auf Gson: http://stackoverflow.com/a/34580505/2267723 –

Antwort

23

Sie myIntent.toURI() verwenden sollten die Intent zu speichern und verwenden Intent.getIntent(String uri) die Intent wiederherzustellen.

public void saveIntent(Intent intent) { 
    mSharedPrefs.edit().putString(SOME_KEY, intent.toURI()).commit(); 
} 

public Intent restoreIntent() { 
    String uri = mSharedPrefs.getString(SOME_KEY, *mSomeDefaultUri*); 
    return Intent.getIntent(uri); 
} 
+1

Great! Liebe diese Antwort! –

+2

Nur für Info, _toUri() _ ist jetzt veraltet. Benutze stattdessen ** toUri (int flags) **. – JJ86

2

Anstatt die Intent zu speichern, können Sie einfach die String speichern, die notwendig ist, um die Intent zu bauen.

Beispiel:

Intent intent = new Intent("com.android.notepad.action.EDIT_TITLE"); 

Jetzt speichern Sie nur eine String enthält com.android.notepad.action.EDIT_TITLE

Verwandte Themen