Есть ли способ явно сказать android, что система разрешает мое намерение использовать приложение / действие по умолчанию для текущего намеренного действия? - PullRequest
0 голосов
/ 17 февраля 2020

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

Когда я использую это код:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);

нет никакой гарантии, что разрешение намерения приведет только к одному действию, согласно описанию метода Intent.resolveActivity в официальной документации:

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

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

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете разрешить Intent самостоятельно, позвонив по номеру PackageManager.queryIntentActivities().

Если это вернет только 1 результат, вы можете просто позвонить startActivity() и быть уверенным, что Android не показать диалог выбора.

Если он возвращает более 1 результата, вы можете сделать что-то еще. Например, поскольку результаты возвращаются из «лучшего» в «худшее» (что бы это ни значило), вы можете просто явно запустить первый результат. Или вы можете отсканировать список результатов в поисках чего-то, что ваш код считает подходящим (ie: соответствует списку имен браузера).

...