повторно предложите выбрать активность по умолчанию - PullRequest
0 голосов
/ 19 октября 2010

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

Я знаю, как это сделать на 2.1 и раньше, но есть ли способ сделать это сейчас на 2.2?

Известный Home Switcher, который сделал подобное, больше не работает на 2.2 благодаря команде Google

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Вот как я представляю диалог выбора активности: Он запускает ResolverActivity для Android по умолчанию для приложений "HOME".

Intent selector = new Intent("android.intent.action.MAIN");
selector.addCategory("android.intent.category.HOME");
selector.setComponent(new ComponentName("android", "com.android.internal.app.ResolverActivity"));

startActivity(selector);

Приведенный выше код работает для моих планшетов с поддержкой 2.2. После выполнения отображается диалоговое окно «Выполнить действия с:» со всеми возможными домашними приложениями в списке.


Способ определения, который в настоящее время установлен по умолчанию, можно запросить для всех предпочтительных действий. Списки «filters» и «comps» содержат данные при вызове .getPreferredActivities (...).

filters - содержит данные фильтра намерений, которые вы можете запросить, к какому типу данных это относится.

comps - содержит компонент, который будет вызван, если фильтр намерений соответствует

Таким образом, вы можете проверить, является ли ваше приложение текущим «домашним» приложением, установленным пользователем.

List<IntentFilter> filters = new ArrayList<IntentFilter>();
List<ComponentName> comps= new ArrayList<ComponentName>();
getPackageManager().getPreferredActivities(filters, comps, null);
0 голосов
/ 19 октября 2010

Например, пользователь выбирает свой домашний apk по умолчанию, и я хочу, чтобы он еще раз пересмотрел свой выбор.

Это больше невозможно, если только ваше приложение не является предпочтительным. Затем, я думаю, вы можете использовать clearPackagePreferredActivities(), чтобы удалить себя в качестве предпочтительного варианта.

Другими словами, вы можете влиять на собственное приложение, но не можете влиять на другие приложения.

...