gpt4 book ai didi

android - intent.resolveActivity != null 但启动 Intent 会引发 ActivityNotFound 异常

转载 作者:IT老高 更新时间:2023-10-28 22:17:35 25 4
gpt4 key购买 nike

出于教育目的,我在此处发布此问题,因为我无法在任何地方找到答案,最终以旧方式(即我自己)找到了根本原因。

这是有问题的代码:

// initially getting the intent from polling the PackageManager about activities resolving Search intent.

ComponentName componentName = intent.resolveActivity(pm);

if (componentName != null) {
context.startActivity(intent);
}

尽管检查我得到一个 ActivityNotFound 异常。

编辑:显然这一点对每个人来说都不是很明显:为什么有一个 Activity 解决了 Intent ,但试图启动它会引发一个 ActivityNotFound 异常——两个事实显然是矛盾的?

最佳答案

据我所知,如果有任何 Activity 解决此 Intent ,intent.resolveActivity() 将返回 true。即使没有导出此 Activity (如果它不是来自您的包,这使得它无法用于所有实际目的)。Android 的 API 不会提及这一点,因此您必须自己弄清楚,并确保您尝试启动的 Activity 确实已导出。

ActivityInfo activityInfo = intent.resolveActivityInfo(pm, intent.getFlags());
if (activityInfo.exported) {
doSomething();
}

编辑:这个问题的重点是 ResolveActivity 将返回一个 componentName 即使 activityInfo.exported==false 并且它不是来自您自己的包 - 这使得它无法启动,并且让我感到惊讶,因为 Intent 已解决但无法启动。

关于android - intent.resolveActivity != null 但启动 Intent 会引发 ActivityNotFound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22479211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com