android - 设置包名称是否会显式隐含意图?
问题描述
如果没有第三行代码,意图将是隐含的。设置包是否使其明确?未指定组件,因此基于Stack Overflow 答案:它是隐式的...
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setPackage("com.example.app");
startActivity(intent);
...但是提供了目标应用程序的包名称,因此它是明确的,基于文档:
显式意图通过提供目标应用程序的包名称或完全限定的组件类名称来指定哪个应用程序将满足该意图。
解决方案
显式意味着定义的应用程序(又名包)应该处理意图。
当您设置应处理意图的包时,是的,它使其明确。
添加
我考虑了显式的定义,这意味着定义了动作。
充分、清楚地表达或展示;没有留下任何暗示;明确:
然后,如果检查它说的setPackage
文档
(通常是可选的)设置一个明确的应用程序包名称,以限制此 Intent 将解析到的组件。如果保留默认值 null,则将考虑所有应用程序中的所有组件。如果非空,则 Intent 只能匹配给定应用程序包中的组件。
所以这都是关于如何理解这些术语Implicit
和Explicit
.
对我来说(根据我从 android 文档中了解到的),隐式是
嘿,我想分享这张很棒的照片,让我们把它送给全世界
这会打开 facebook、instagram、whatsapp 等的选择器。
明确的是
嘿,我想与Instagram分享这张很棒的图片,请打开它并分享图片
仅打开 instagram(按包)。
推荐阅读
- c# - 从 Xamarin 中的 Codebehind 更新标签
- excel - 导出传入 Outlook 电子邮件的“收件人”地址
- sql - 为什么 SQL Server 的 SOUNDEX 给我的结果不一致?
- performance-testing - 我是否正确应用利特尔定律来为网站的工作负载建模?
- javascript - 在 div 标签 id 属性中隐藏 HTML5 视频源
- php - 如何在 Google App Engine 上运行 Larvel 的 php artisan 命令
- c# - 将这两种方法合二为一
- amazon-web-services - AWS CloudWatch 代理使用 IMDSv2 监控内存
- react-native - React-native - 将应用程序部署到 xcode 时出错 - 找不到选项“-LL/Users/...”的目录
- xamarin.ios - UIScrollView 停止得太快了