Сохраняющиеся намерения по запуску Android? - PullRequest
3 голосов
/ 20 марта 2012

Я создаю пользовательскую настройку, чтобы запомнить, какое действие пользователь хочет запустить из списка возможностей. (Эффективно реализует «Выборщик всегда запускает это действие, когда вы видите такого рода намерения», но специально запоминая результат для моего конкретного приложения, а не для всей системы.)

Я получаю список возможных действий, таких как:

    Intent myIntent = new Intent();
    myIntent.setAction(Intent.ACTION_SEND);
    myIntent.setType("text/plain");    
    myIntent.putExtra(Intent.EXTRA_TEXT, "Probe text");

    PackageManager manager = getContext().getPackageManager();
    List<ResolveInfo> infoList = manager.queryIntentActivities(myIntent,PackageManager.MATCH_DEFAULT_ONLY);

... в результате получается список ResolveInfo s.

Мой вопрос: как только мой пользователь выберет один из них, каков наилучший способ сохранить это в качестве предпочтения? То есть, что я пишу в мои SharedPreferences (в отдельном элементе, если это возможно), и как при следующем запуске моего приложения я могу прочитать это и запустить соответствующее намерение?

1 Ответ

3 голосов
/ 20 марта 2012

Ну, вы можете позвонить toUri() на Intent, чтобы преобразовать его в Uri, который затем можно превратить в String с помощью стандартного toString(). Чтобы полностью изменить процесс, проанализируйте String в Intent, используя Intent.parseUri().

Однако вам потребуется добавить достаточную защиту, чтобы иметь дело с различными возможностями, такими как:

  • пользователь удалил приложение
  • пользователь обновил приложение, и приложение больше не поддерживает Intent сохраненный вами

Также, пожалуйста, будьте осторожны, когда вы прикрепляете этот зонд (текст). : -)

...