tan*_*ine 24 android android-intent
我在这里发布这个问题用于教育目的,因为我无法在任何地方找到答案,最终找到了原因,即我自己.
这是有问题的代码:
// initially getting the intent from polling the PackageManager about activities resolving Search intent.
ComponentName componentName = intent.resolveActivity(pm);
if (componentName != null) {
context.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
尽管检查我得到一个ActivityNotFound异常.
编辑:显然这一点对每个人来说并不明显:为什么有一个活动解决了意图,但试图启动它会抛出一个ActivityNotFound异常 - 两个事实显然是矛盾的?
tan*_*ine 29
从我所看到的,如果有任何活动解决此意图,intent.resolveActivity()将返回true.即使没有导出此活动(这使得它不能用于所有实际目的,以防它不在您的包中).Android的API并不在乎提及,因此您必须自己解决,并确保您尝试启动的活动确实已导出.
ActivityInfo activityInfo = intent.resolveActivityInfo(pm, intent.getFlags());
if (activityInfo.exported) {
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题的重点是ResolveActivity将返回一个componentName,即使activityInfo.exported == false并且它不是来自你自己的包 - 这使得它无法解析,并且让我感到惊讶,因为意图已经解决但却无法解决.
| 归档时间: |
|
| 查看次数: |
11962 次 |
| 最近记录: |