Я хочу определить, является ли мое приложение запуска средством запуска по умолчанию, и если нет, появится запрос, чтобы пользователь выбрал мое приложение в качестве средства запуска по умолчанию. Проблема, с которой я сталкиваюсь, заключается в том, что подсказка появляется без вариантов «Только один раз» и «Всегда». Кроме того, выбор в моем приложении запуска не устанавливает значение по умолчанию.
В моем onCreate у меня есть следующая проверка, чтобы увидеть, является ли мое приложение средством запуска по умолчанию, а затем я запускаю диалоговое окно с намерением, чтобы пользователь мог выбрать мое приложение в качестве средства запуска по умолчанию.
if (!isMyAppLauncherDefault()) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "Set as default to enable Kiosk Mode"));
}
Вот мой метод проверки того, является ли мое приложение средством запуска по умолчанию.
private boolean isMyAppLauncherDefault() {
final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
filter.addCategory(Intent.CATEGORY_HOME);
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(filter);
final String myPackageName = getPackageName();
List<ComponentName> activities = new ArrayList<ComponentName>();
final PackageManager packageManager = (PackageManager) getPackageManager();
// You can use name of your package here as third argument
packageManager.getPreferredActivities(filters, activities, null);
for (ComponentName activity : activities) {
if (myPackageName.equals(activity.getPackageName())) {
return true;
}
}
return false;
}
Примечание. Я попытался изменить способ запуска своего намерения (см. фрагмент кода ниже). Но тогда лаунчер вообще не заходит. Ничего не произошло.
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Как я могу заставить отображать кнопку ВСЕГДА и как я могу установить фактические настройки запуска по умолчанию. Заранее спасибо!