如果没有第三行代码,该意图将是隐式的。设置软件包是否使其明确?该组件未指定,因此基于Stack Overflow answers:它是隐式的...
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setPackage("com.example.app");
startActivity(intent);
...但是根据docs提供了目标应用的程序包名称,因此它是显式的:
显式意图通过以下方式指定哪个应用程序将满足该意图 提供目标应用的软件包名称或 组件类名称。
答案 0 :(得分:1)
明确表示已定义的应用程序(即程序包)应处理意图。
设置要处理意图的程序包时,是的,它使它明确。
添加
我考虑了definition of explicit,这意味着已定义操作。
充分明确地表达或证明;只留下一点暗示;明确的:
然后如果检查setPackage
docs上显示的内容
(通常为可选),设置一个 explicit 应用程序包名称,以限制该Intent将解析为的组件。如果保留默认值null,则将考虑所有应用程序中的所有组件。如果非null,则Intent只能匹配给定应用程序包中的组件。
这就是如何理解术语Implicit
和Explicit
的全部。
对我来说(根据我对android文档的了解),隐式是
嘿,我想分享这张超赞的图片,让它传播给全世界
打开Facebook,Instagram,whatsapp等的选择器。
显式为
嘿,我想与 Instagram 共享这张超赞的图片,请打开并共享该图片
仅按包打开instagram。