Как я могу использовать неявное намерение, но избегать экрана «выбрать приложение для обработки этого намерения»? - PullRequest
1 голос
/ 24 июня 2019

В моем коде я хочу вызвать неявное намерение открыть другое действие библиотеки Android.

Intent i = new Intent("Shared library", Uri.parse("https://www.google.com/"));
startActivity(i);

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

Или потому что все приложения содержат одну и ту же библиотеку, которую она просто откроет?

1 Ответ

0 голосов
/ 24 июня 2019

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

Если в библиотеке:

  • ... это AAR
  • ... имеет файл AndroidManifest.xml, который ...
  • ... имеет <activity> с <intent-filter>, который соответствует вашему неявному Intent

Тогда любое приложение, которое включает библиотеку и не блокирует ее <activity> через собственный манифест, будет кандидатом для ответа на этот неявный Intent. Если таких приложений более 2+, возникает нормальное неявное разрешение Android Intent:

  • Если пользователь установил значение по умолчанию для этой Intent структуры при предыдущем вызове startActivity(), то это действие по умолчанию будет тем, которое запущено
  • В противном случае пользователь увидит селектор

Или потому что все приложения содержат одну и ту же библиотеку, которую она просто откроет?

Нет, поскольку Android не знает, какое именно приложение нужно пользователю.

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

Вы не можете, если пользователь не установил активность по умолчанию. Пользователь должен решить, какое действие приложения должно обрабатывать это неявное Intent.

Другими словами: авторам вредоносного ПО понравится возможность в одностороннем порядке перехватить неявное Intents и заставить их всех направиться к вредоносному ПО.

...