首页 > 解决方案 > 设置包名称是否会显式隐含意图?

问题描述

如果没有第三行代码,意图将是隐含的。设置包是否使其明确?未指定组件,因此基于Stack Overflow 答案:它是隐式的...

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setPackage("com.example.app");
startActivity(intent);

...但是提供了目标应用程序的包名称,因此它是明确的,基于文档

显式意图通过提供目标应用程序的包名称或完全限定的组件类名称来指定哪个应用程序将满足该意图。

标签: androidandroid-intent

解决方案


显式意味着定义的应用程序(又名包)应该处理意图。

当您设置应处理意图的包时,是的,它使其明确。

添加

我考虑了显式的定义,这意味着定义了动作。

充分、清楚地表达或展示;没有留下任何暗示;明确:

然后,如果检查它说的setPackage 文档

(通常是可选的)设置一个明确的应用程序包名称,以限制此 Intent 将解析到的组件。如果保留默认值 null,则将考虑所有应用程序中的所有组件。如果非空,则 Intent 只能匹配给定应用程序包中的组件。

所以这都是关于如何理解这些术语ImplicitExplicit.

对我来说(根据我从 android 文档中了解到的),隐式是

嘿,我想分享这张很棒的照片,让我们把它送给全世界

这会打开 facebook、instagram、whatsapp 等的选择器。

明确的是

嘿,我想与Instagram分享这张很棒的图片,请打开它并分享图片

仅打开 instagram(按包)。


推荐阅读