2010-05-11 3 views
8

Надеюсь, вы поймете мой вопрос с моим основным английским языком ...Любое обходное решение для сохранения намерения в настройках?

В моем приложении я разрешаю пользователю вводить кнопку, запускающую приложение по своему выбору. У меня нет проблем, чтобы составить список всех установленных приложений, получить Intent и запустить выбранное приложение.

Но я хотел бы сохранить соответствующее намерение в настройках в следующий раз пользователь использовать мое приложение, но только настройки позволяют мне сохранить базовый тип данных (целое число, логическое значение, Strings и т.д.)

Итак, мой вопрос заключается в том, как сохранить намерение умным способом.

Надеюсь, вы поможете мне найти решение.

+0

Попробуйте это решение, основанное на Gson: http://stackoverflow.com/a/34580505/2267723 –

ответ

23

Вы должны использовать myIntent.toURI() для хранения Intent и использовать Intent.getIntent(String uri) для восстановления Intent.

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

Отлично! Любите этот ответ! –

+2

Только для информации, _toUri() _ теперь устарел. Вместо этого используйте ** toUri (int flags) **. – JJ86

2

Вместо сохранения Intent вы можете просто сэкономить String, который необходим для сборки Intent.

Пример:

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

Теперь вы просто хранить String, содержащий com.android.notepad.action.EDIT_TITLE

Смежные вопросы