Android Intent知识总结
Android Intent 知识总结整理日期2026-07-30覆盖显式/隐式 Intent、Intent Filter、PendingIntent、Flag、安全限制与现代 API官方Intents and Intent Filters目录1. 是什么2. 能启动什么3. 显式 vs 隐式4. Intent 核心字段5. Intent Filter 匹配规则6. 常用 Action / Category / Data7. 传递数据8. 启动与结果回调9. Intent Flag10. PendingIntent11. 广播中的 Intent12. 安全与高版本限制13. 常见坑14. 速查 Checklist15. 优缺点与选型16. 参考链接1. 是什么Intent是 Android 组件间通信的消息对象描述「要做什么」启动 Activity / Service发送广播携带 action、data、category、extras、component 等信息系统根据 Intent 找到目标组件解析匹配或显式指定。发送方 ── Intent ──→ 系统AMS──→ 目标组件注意Intent不是通用 RPC跨进程大数据、持续通信应使用 Binder / AIDL / ContentProvider 等。2. 能启动什么目标API说明ActivitystartActivity/startActivityForResult旧/ Activity Result API可带 Flag、结果回传ServicestartService/startForegroundService/bindService后台限制多优先评估 WorkManager / FGSBroadcastReceiversendBroadcast/sendOrderedBroadcast显式广播更安全其他 App隐式 Intent 或显式指定包名/组件受包可见性、exported 影响3. 显式 vs 隐式3.1 显式 IntentExplicit明确指定目标组件类名或ComponentName应用内首选。valintentIntent(this,DetailActivity::class.java).apply{putExtra(EXTRA_ID,id)}startActivity(intent)优点匹配确定、安全、不受 Filter 干扰缺点需知道目标类跨应用时耦合包名/组件名3.2 隐式 IntentImplicit不指定组件靠action category data与 Manifest 中intent-filter匹配。valintentIntent(Intent.ACTION_VIEW,Uri.parse(https://example.com))startActivity(intent)优点解耦、可调起系统/其他 App浏览器、分享、相机缺点可能匹配多个或零个安全与可见性限制多解析相关resolveActivity/queryIntentActivities是否有处理器多个匹配时系统弹出选择器可用Intent.createChooser强制选择器4. Intent 核心字段字段作用Component显式目标组件Action要执行的通用动作字符串DataUri如content://、https://、tel:TypeMIME如image/*、application/pdf可与 Data 联动Category额外类别如CATEGORY_DEFAULT、LAUNCHERExtrasBundle键值对载荷Flags影响任务栈、权限授予等行为Package限制只匹配某包名半显式关系示意Intent ├─ component? → 有则显式不再走 filter 匹配 ├─ action / category ├─ data (uri) type ├─ extras (Bundle) └─ flags设置 Data 与 Type 时注意setData会清 typesetType会清 data需同时设时用setDataAndType。5. Intent Filter 匹配规则目标组件在 Manifest 声明intent-filter后隐式 Intent 需同时满足5.1 ActionIntent 的 action 必须与 Filter 中某一个action 相同Filter 无 action 则匹配不带 action 的 Intent少见5.2 CategoryIntent 中的每个category 都必须在 Filter 中出现startActivity会自动加CATEGORY_DEFAULT故 Activity 的 filter几乎必须写categoryandroid:nameandroid.intent.category.DEFAULT/5.3 Data按 URI 的 scheme / host / port / path / pathPrefix / pathPattern 以及 mimeType 匹配。多个data会组合成可匹配集合具体以官方匹配算法为准。示例activityandroid:name.WebActivityandroid:exportedtrueintent-filteractionandroid:nameandroid.intent.action.VIEW/categoryandroid:nameandroid.intent.category.DEFAULT/categoryandroid:nameandroid.intent.category.BROWSABLE/dataandroid:schemehttpsandroid:hostwww.example.com//intent-filter/activityDeep Link / App LinksBROWSABLEhttps Digital Asset Links 验证。6. 常用 Action / Category / Data6.1 常见 ActionAction用途ACTION_MAIN入口配合CATEGORY_LAUNCHERACTION_VIEW查看数据链接、地图、文件ACTION_SEND/ACTION_SEND_MULTIPLE分享ACTION_DIAL/ACTION_CALL拨号CALL 需权限ACTION_EDIT编辑ACTION_PICK/ACTION_GET_CONTENT/ACTION_OPEN_DOCUMENT选择内容推荐 SAFACTION_CREATE_DOCUMENT创建文档SAFACTION_WEB_SEARCH网页搜索ACTION_BATTERY_LOW等系统广播多已限制静态注册自定义 action 建议用包名反域com.example.app.ACTION_SYNC。6.2 常见 CategoryCategory用途CATEGORY_DEFAULTActivity 隐式启动必需CATEGORY_LAUNCHER桌面图标入口CATEGORY_BROWSABLE可被浏览器/链接唤起6.3 Data 示例Intent(Intent.ACTION_VIEW,Uri.parse(geo:0,0?qBeijing))Intent(Intent.ACTION_DIAL,Uri.parse(tel:10086))Intent(Intent.ACTION_SEND).apply{typetext/plainputExtra(Intent.EXTRA_TEXT,hello)}7. 传递数据7.1 Extrasintent.putExtra(key_string,value)intent.putExtra(key_int,1)intent.putExtra(key_parcelable,user)// Parcelable / 推荐 Parcelizevalbundleintent.extras注意说明体积Intent 载荷有 Binder 事务大小限制常见约 1MB 量级宜远小于此大图/大列表用Uri、磁盘缓存、ViewModel、单例仓库勿塞巨型 Bitmap类型安全可用类型安全封装或 Navigation Safe Args7.2 ClipData / URI 权限分享文件时valintentIntent(Intent.ACTION_SEND).apply{typeapplication/pdfputExtra(Intent.EXTRA_STREAM,contentUri)addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)clipDataClipData.newUri(contentResolver,pdf,contentUri)}使用FileProvider提供content://Uri避免file://与FileUriExposedException。8. 启动与结果回调8.1 只启动startActivity(intent)// 跨任务栈常见// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)8.2 需要返回结果现代写法vallauncherregisterForActivityResult(ActivityResultContracts.StartActivityForResult()){result-if(result.resultCodeRESULT_OK){valdataresult.data}}launcher.launch(Intent(this,EditActivity::class.java))常用 ContractTakePicture、GetContent、OpenDocument、RequestPermission等。目标页返回setResult(RESULT_OK,Intent().putExtra(result,value))finish()旧 APIstartActivityForResult/onActivityResult已不推荐。9. Intent Flag9.1 任务栈相关ActivityFlag作用FLAG_ACTIVITY_NEW_TASK在新任务中启动非 Activity Context 常必需FLAG_ACTIVITY_CLEAR_TOP若栈中已有目标清除其上 Activity 并复用/重建FLAG_ACTIVITY_SINGLE_TOP栈顶已是目标则不新建走onNewIntentFLAG_ACTIVITY_CLEAR_TASK常与 NEW_TASK 联用清空目标任务再启动FLAG_ACTIVITY_NO_HISTORY离开后不留在栈中FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS不进最近任务与launchModesingleTop/singleTask等共同决定实例复用需结合测试。9.2 URI 权限相关Flag作用FLAG_GRANT_READ_URI_PERMISSION授予接收方读 UriFLAG_GRANT_WRITE_URI_PERMISSION授予写FLAG_GRANT_PERSISTABLE_URI_PERMISSION可持久化需再 takePersistable9.3 其他Flag作用FLAG_ACTIVITY_NEW_DOCUMENT文档式多任务近年多窗场景Receiver 相关如FLAG_RECEIVER_FOREGROUND等按场景查阅10. PendingIntentPendingIntent交给其他应用/系统通知、闹钟、桌面小部件的「延迟触发 Intent 令牌」由系统持有发送身份按创建时的权限与身份。valintentIntent(context,TargetActivity::class.java)valpendingPendingIntent.getActivity(context,requestCode,intent,PendingIntent.FLAG_UPDATE_CURRENTorPendingIntent.FLAG_IMMUTABLE)工厂方法用途getActivity拉起 ActivitygetBroadcast发广播getService/getForegroundService启服务可变性Android 12 强制必须指定其一FLAG_IMMUTABLE不可被填充修改默认推荐FLAG_MUTABLE允许后续修改如内联回复、需填充 Extra 的场景常与FLAG_UPDATE_CURRENT/FLAG_CANCEL_CURRENT/FLAG_ONE_SHOT组合。优点系统组件可代为拉起 App权限模型清晰缺点Flag 用错易安全漏洞或无法更新后台启动 Activity 仍受限11. 广播中的 Intent// 发送sendBroadcast(Intent(ACTION_CUSTOM).setPackage(packageName))// 显式包名更安全// 动态注册API 34 必须指定导出标志ContextCompat.registerReceiver(context,receiver,IntentFilter(ACTION_CUSTOM),ContextCompat.RECEIVER_NOT_EXPORTED)点说明显式广播指定组件或 package避免被第三方窃听隐式 静态注册Android 8 大量禁止有序广播sendOrderedBroadcast可中止传播LocalBroadcastManager已废弃改用应用内事件Flow 等12. 安全与高版本限制版本/主题影响Android 11 包可见性查询/调起其他 App 需queries或可见性例外Android 12 exported含 intent-filter 的组件必须声明android:exportedAndroid 12 PendingIntent必须 IMMUTABLE 或 MUTABLEAndroid 12 隐式 Intent向非导出组件发送隐式 Intent 受限匹配规则更严Android 10 BAL后台启动 Activity 严格限制通知 PendingIntent 等有例外路径Android 14动态广播必须指定 exportedIntentSender/BAL 继续收紧File Uri禁止暴露file://给其他 App用 FileProvider原则应用内通信 →显式 Intent对外能力 → 最小化exportedtrue 权限分享文件 →content:// Grant Uri Permission调外部 App → 先resolveActivity并声明queriesqueriesintentactionandroid:nameandroid.intent.action.VIEW/dataandroid:schemehttps//intentpackageandroid:namecom.other.app//queries13. 常见坑现象原因处理ActivityNotFoundException无匹配或包不可见resolveActivity补queries隐式启不起来缺CATEGORY_DEFAULTFilter 加上 DEFAULTsetType后 data 丢了API 互斥用setDataAndTypeTransactionTooLargeExtras 过大改传 Uri/ID通知点了没反应PendingIntent Flag/后台限制IMMUTABLE/UPDATE符合 BAL 例外分享图片对方打不开未授权 Uri / 未设 ClipDataFLAG_GRANT_READ ClipData非 Activity Context 崩溃缺NEW_TASK加FLAG_ACTIVITY_NEW_TASKonNewIntent没走未 singleTop/Flag检查 launchMode 与 Flag14. 速查 Checklist应用内跳转是否全部显式Activity 隐式 filter 是否含DEFAULT及需要的BROWSABLE含 filter 的组件是否声明exported对外调起是否声明queriesExtras 是否够小大对象是否改 Uri文件分享是否 FileProvider Grant 权限PendingIntent 是否含IMMUTABLE/MUTABLE结果回调是否已迁 Activity Result APIService/广播是否符合后台与导出新规15. 优缺点与选型Intent 机制整体优点系统级解耦易调起系统能力组件模型统一缺点隐式匹配与安全策略复杂载荷大小受限后台行为年年收紧怎么选场景建议同 App 页面跳转显式 Intent / Navigation 组件要返回结果Activity Result API打开链接/分享/选文件隐式 Intent 系统 Contract通知/小组件/闹钟PendingIntentIMMUTABLE 优先应用内事件总线不要用隐式广播用 Flow / 共享 ViewModel跨 App 结构化数据ContentProvider而非塞巨型 Extra16. 参考链接Intents and Intent FiltersCommon IntentsPendingIntentActivity Result APIPackage visibilityShare files with FileProvider一句话Intent 描述「要做什么」应用内用显式跨应用用隐式 Filter数据走 Extras/Uri系统代发用 PendingIntent始终处理exported、包可见性、Uri 权限与后台启动限制。

相关新闻

求助!!请大家帮忙看看我的嵌入式规划

求助!!请大家帮忙看看我的嵌入式规划

本人某末2的电子专业,开学大二,下个暑假想去找实习,请大家看看我这样规划能不能行

2026/10/19 17:50:41 阅读更多 →
数据资产目录:从元数据管理到数据治理的实践指南

数据资产目录:从元数据管理到数据治理的实践指南

1. 从“数据沼泽”到“数据绿洲”:为什么你的团队需要一个资产目录如果你在数据团队待过一段时间,大概率听过这样的对话:“我们去年不是做过一个用户画像项目吗?那个模型文件放哪了?”“财务部要的那个季度销售报表&am…

2026/10/18 12:56:05 阅读更多 →
Windows安卓应用安装终极指南:3分钟快速掌握APK Installer完整使用

Windows安卓应用安装终极指南:3分钟快速掌握APK Installer完整使用

Windows安卓应用安装终极指南:3分钟快速掌握APK Installer完整使用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer是一款专为Windows平台设计…

2026/10/17 9:22:25 阅读更多 →

最新新闻

ZooKeeper Java API 实战:节点CRUD、监听与权限控制

ZooKeeper Java API 实战:节点CRUD、监听与权限控制

之前维护某个调度系统时,ZooKeeper 几乎撑起了所有核心链路——分布式锁、任务节点注册、配置下发,哪一环离了它都容易出事。当时最头疼的反而不是 ZK 集群本身,而是原生 Java API 那套写起来别扭的姿势:Session 状态要自己盯、Wa…

2026/10/20 10:45:37 阅读更多 →
EspoCRM 部署指南:30分钟从零上线你的开源CRM系统

EspoCRM 部署指南:30分钟从零上线你的开源CRM系统

EspoCRM 部署指南:30分钟从零上线你的开源CRM系统 【免费下载链接】espocrm EspoCRM – Open Source CRM Application 项目地址: https://gitcode.com/GitHub_Trending/es/espocrm EspoCRM 部署指南:面向中小团队与开发者的开源客户关系管理系统&…

2026/10/20 10:45:37 阅读更多 →
HTTPS抓包与逆向分析:从中间人代理到App签名算法还原

HTTPS抓包与逆向分析:从中间人代理到App签名算法还原

1. 分析前的工程准备:抓包、反编译与绕过证书检测1.1 为什么抓包环境会直接决定后续分析效率我第一次处理某虾App的数据需求时,心里想得很简单:把接口请求抓到,照着参数模拟一套不就完事了?结果打开抓包工具一看&#…

2026/10/20 10:45:37 阅读更多 →
工控调试必修课:掌握字节、十六进制与大小端

工控调试必修课:掌握字节、十六进制与大小端

前阵子在某现场处理一台仪表的通信问题,报文已经抓出来了,十六进制字符串干干净净摆在屏幕上,可上位机显示的温度永远是乱码。折腾到最后,原因特别简单:寄存器里两个字节的顺序反了。类似的故事,在工控调试…

2026/10/20 10:45:37 阅读更多 →
降重降AI的软件哪个好?能同时降重复率和AI率的才省事,AI率降到20%以下!

降重降AI的软件哪个好?能同时降重复率和AI率的才省事,AI率降到20%以下!

降重降AI的软件哪个好?能同时降重复率和AI率的才省事,AI率降到20%以下! 降重降AI的软件哪个好?这是很多同学在交稿前一周反复搜的问题。查重报告刚压到合格,AIGC报告又标了一片红;换个工具专门降AI&#x…

2026/10/20 10:45:37 阅读更多 →
为什么一降重AI率就升高?手动降重越改越像AI,降重降AI一起做才是正解!

为什么一降重AI率就升高?手动降重越改越像AI,降重降AI一起做才是正解!

为什么一降重AI率就升高?手动降重越改越像AI,降重降AI一起做才是正解! 为什么一降重AI率就升高?不少同学都碰到过:查重报告上的红色总算改少了,再送去做AIGC检测,AI率反而比改之前还高。明明每…

2026/10/20 10:44:37 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →