Как я могу передать определенную ссылку, когда я использую PackageManager? - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу передать ссылку на видео и хочу, чтобы приложение YouTube воспроизводило это видео напрямую, и я хочу использовать следующий код:

btn3.setOnClickListener {
        val i = getPackageManager().getLaunchIntentForPackage("com.google.android.youtube")!!
        startActivity(i)
}

Я не хочу использовать следующий код:

startActivity(Intent(Intent.ACTION_VIEW,Uri.parse("link of video")))

1 Ответ

0 голосов
/ 20 апреля 2020

Вместо того, чтобы запрашивать запуск Intent, который не принимает никаких аргументов, вы можете позвонить setPackage() на ACTION_VIEW Intent, чтобы сообщить ОС, чтобы открыть нужное приложение:

val intent = Intent(Intent.ACTION_VIEW, Uri.parse("link of video")).apply {
  setPackage("com.google.android.youtube")
}

Вы должны быть осторожны, хотя, если приложение YouTube не установлено на устройстве, ваш код выдаст ActivityNotFoundException. Лучший способ защититься от этого - использовать PackageManager.queryIntentActivities(), который вернет пустой список, если нет действий, которые могут обработать Intent.

...