Просмотр intent.resolveActivity! = Null, но запуск намерения выдает исключение ActivityNotFound Я написал, открывая браузер или приложение с глубинными ссылками:
private fun openUrl(url: String) {
val intent = Intent().apply {
action = Intent.ACTION_VIEW
data = Uri.parse(url)
// setDataAndType(Uri.parse(url), "text/html")
// component = ComponentName("com.android.browser", "com.android.browser.BrowserActivity")
// flags = Intent.FLAG_ACTIVITY_CLEAR_TOP + Intent.FLAG_GRANT_READ_URI_PERMISSION
}
val activityInfo = intent.resolveActivityInfo(packageManager, intent.flags)
if (activityInfo?.exported == true) {
startActivity(intent)
} else {
Toast.makeText(
this,
"No application can handle the link",
Toast.LENGTH_SHORT
).show()
}
}
Не работает. В эмуляторе API 30 не обнаружен браузер, а обычный решение работает:
private fun openUrl(url: String) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
Toast.makeText(
this,
"No application can handle the link",
Toast.LENGTH_SHORT
).show()
}
}
Первый метод не работает, потому что intent.resolveActivityInfo
или intent.resolveActivity
возвращает null
. Но для средства просмотра PDF он работает.
Должны ли мы уволить intent.resolveActivity
?
<queries>
в манифесте, он работает, как ожидалось. Если вы предпочитаете не включать такой<queries>
, то можете просто придерживаться _3 _-_ 4_. - person Mike M.   schedule 23.06.2020