android - `Intent.setPackage()` 的作用是什么
问题描述
的作用是什么Intent.setPackage(String packageName)
,因为intent
会通过or的componentName
设置来寻找匹配,所以即使你设置了错误的packageName也能找到匹配。Intent.setClassName(Context packageContext,String className)
Intent.setComponent(ComponentName component)
Intent.setPackage(String packageName)
解决方案
setClassName()
以您要运行的确切包名称和确切组件为目标。例如,如果您想使用 Gmail 应用程序发送电子邮件,使用它来运行您想要运行的确切活动(组件)。
setPackage()
针对一个确切的应用程序,并为您提供可以处理您的意图的所有组件。
如果您不填写这两个,它将针对所有应用程序和组件,这在某些情况下并不理想,例如您只想针对 WhatApp 共享内容。如果您想在任何社交媒体应用程序上分享该内容,请忽略这两个并坚持使用action
、data
和 ... 字段。
推荐阅读
- swiftui - 如何使用 addSnapshotListener 获取异步元素的数据数量
- c# - 托管 Blazor WASM - 使用 AAD 进行身份验证,但使用 SQL 中的本地用户角色
- python-3.x - 带有 .png/ .jpeg 图像的散点图标记
- excel - 将 Web 浏览器自动化转换为 XmlHTTP 请求
- json - 如何使用带有firebase db的ReactJS上的动态路由在单个页面上通过id传递不同的数据?
- docker - 在 alpine docker 容器 cron 作业中运行 -i 时,ffmpeg 挂起
- r - 如何正确循环遍历 df 列表中的所有 csv 并将其呈现在全局环境中,而无需完整路径名或扩展名结尾为 df?
- python - 测试折叠上的 CV 和欠采样
- javascript - 使用 Javascript 从动态生成的表中的 HTMLCollection 获取值
- javascript - 如何确保 axios 调用中的 onUploadProgress 回调被单元测试覆盖