设置程序包名称是否会使隐式意图显式化?

时间:2019-02-05 16:30:48

标签: android android-intent

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

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

...但是根据docs提供了目标应用的程序包名称,因此它是显式的:

  

显式意图通过以下方式指定哪个应用程序将满足该意图   提供目标应用的软件包名称或   组件类名称。

1 个答案:

答案 0 :(得分:1)

明确表示已定义的应用程序(即程序包)应处理意图。

设置要处理意图的程序包时,是的,它使它明确。

添加

我考虑了definition of explicit,这意味着已定义操作。

  

充分明确地表达或证明;只留下一点暗示;明确的:

然后如果检查setPackage docs上显示的内容

  

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

这就是如何理解术语ImplicitExplicit的全部。

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

  

嘿,我想分享这张超赞的图片,让它传播给全世界

打开Facebook,Instagram,whatsapp等的选择器。

显式为

  

嘿,我想与 Instagram 共享这张超赞的图片,请打开并共享该图片

仅按包打开instagram。