10

Hope you will understand my question with my basic english...

In my application, I allow the user to have a button that launch the application of his choice. I get no problem to make a list of all installed apps, get the Intent and launch the choosen app.

But I would like to save the corresponding intent in the settings for the next time the user use my application, but settings only allow me to save basic data type ( Integer, boolean, Strings, etc. )

So, my question is how to save an intent in a smart way.

I hope you can help me to find a solution.

Waza_Be
  • 39,407
  • 49
  • 186
  • 260

2 Answers2

27

You should use myIntent.toURI() to store the Intent, and use Intent.getIntent(String uri) to restore the 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);
}
Alex Lockwood
  • 83,063
  • 39
  • 206
  • 250
æ-ra-code
  • 2,140
  • 30
  • 28
2

Instead of saving the Intent you could just save the String which is necessary to build the Intent.

Example:

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

Now you just store a String containing com.android.notepad.action.EDIT_TITLE

Alex Lockwood
  • 83,063
  • 39
  • 206
  • 250