Сохранение намерений запуска Android?

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

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

    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.

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


person Matt Gibson    schedule 20.03.2012    source источник


Ответы (1)


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

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

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

Кроме того, будьте осторожны, куда вы втыкаете этот зонд (текст). :-)

person CommonsWare    schedule 20.03.2012
comment
Спасибо, вроде работает хорошо. Буду осторожен как с удаленными/измененными приложениями, так и со своим пробником :) - person Matt Gibson; 21.03.2012