Приложение Android по умолчанию - PullRequest
0 голосов
/ 09 января 2011

Я хотел бы знать, как показать флажок, который делает некоторые приложения по умолчанию в файле createChooser.

заранее спасибо.


да Дэвид, я хотел бы знать, как очистить приложение от использования по умолчанию.также я хотел бы знать, могу ли я вызвать какое-либо намерение, если я знаю его действие, категорию, пакет и «имя класса», могу ли я?

Я на самом деле пытался вызвать какое-то действие, которое я ранее знал, его содержаниенекоторые БЕЗОПАСНОСТЬ EXP.поднял.Зачем?

1 Ответ

2 голосов
/ 10 января 2011

Ваш вопрос мне не понятен на 100%, так что простите, если я отвечаю не на тот вопрос.Звучит так, как будто вы хотите:

  1. Всплывающее диалоговое окно, которое позволяет пользователю выбрать вашу активность в качестве значения по умолчанию для обработки какого-либо намерения;или
  2. Проверьте, является ли ваша активность намерением по умолчанию.

Я отвечу на оба вопроса.

Чтобы открыть диалоговое окно, в котором пользователь может выбрать вашактивность по умолчанию для обработки какого-либо намерения, просто вызовите 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
}

Надеюсь, это поможет!Если вы хотите узнать, как облегчить пользователю очистку другого приложения от использования по умолчанию, сообщите мне.

...