Ваш вопрос мне не понятен на 100%, так что простите, если я отвечаю не на тот вопрос.Звучит так, как будто вы хотите:
- Всплывающее диалоговое окно, которое позволяет пользователю выбрать вашу активность в качестве значения по умолчанию для обработки какого-либо намерения;или
- Проверьте, является ли ваша активность намерением по умолчанию.
Я отвечу на оба вопроса.
Чтобы открыть диалоговое окно, в котором пользователь может выбрать вашактивность по умолчанию для обработки какого-либо намерения, просто вызовите startActivity()
с этим намерением.Например, если вы хотите зарегистрировать себя как домашний экран по умолчанию, вы просто:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
1 из 3 вещей произойдет.
- Либо не указано по умолчанию (иесли пользователь только что установил ваше приложение, оно очистит значение по умолчанию) и, таким образом, появится всплывающее окно, или вы уже по умолчанию, или кто-то другой по умолчанию.
- Если вы уже по умолчанию, тогда круто, просто выясните, как справиться с этим намерением один раз (возможно, добавьте
EXTRA
, который объясняет, что это был просто тест, чтобы ваша активность сразу же узнала finish()
). Есликто-то другой по умолчанию, вам нужно пройти через очистку значений по умолчанию для этого приложения.Если по умолчанию никто не установлен, вы можете выдать уведомление Toast
, объясняющее, что должен делать пользователь.
Toast.makeText(this,
"Please check 'Use by default for this action' and then press 'MyActivity'",
Toast.LENGTH_LONG).show();
Все эти беспорядочные ситуации решаются илучше сначала проверить, прежде чем звонить startActivity()
.Для этого используйте ResolveInfo
.
ResolveInfo res = getPackageManager().resolveActivity(intent, 0);
// Got to be a better way to determine if there is no default...
if (res.activityInfo.packageName.equals("android")) {
// No default selected
} else if (res.activityInfo.packageName.equals(getPackageName())) {
// We are default
} else {
// Someone else is default
}
Надеюсь, это поможет!Если вы хотите узнать, как облегчить пользователю очистку другого приложения от использования по умолчанию, сообщите мне.