Android 基础知识系列之 Intent
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能
Intent
是一个消息传递对象,主要用于组建之间的通讯,例如:启动Activity
、启动Service
、传递Broadcast
等
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
Intent 主要用途、流程图
Intent 分类
隐式 Intent 接收过滤类型
PendingIntent 使用方法
Intent 7 大常用属性
使用ADB调试 Intent
Intent 常用方法使用总结
Intent 流程图
Intent 流程图
1. Intent 主要用途
1. 启动Activity
startActivity()
Activity
startActivityForResult()
2. 启动Service
startService()
bindService()
3. 传递 Broadcast
sendBroadcast()
sendOrderedBroadcast()
sendStickyBroadcast()
2. Intent 分类
1.显示 Intent
按名称(完全限定类名)指定要启动的组件。
显示 Intent启动Activity
2.隐式 Intent
不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它
隐式启动Intent
3. 隐式Intent 接收过滤类型
应用可以接收哪些隐式Intent
,请在清单文件中使用 <intent-filter>
元素为每个应用组件声明一个或多个 Intent
过滤器。每个 Intent 过滤器均根据 Intent
的操作、数据和类别指定自身接受的Intent
类型。 仅当隐式Intent
可以通过Intent
过滤器之一传递时,系统才会将该 Intent
传递给应用组件。
<action>
在 name
属性中,声明接受的 Intent
操作。该值必须是操作的文本字符串值,而不是类常量。
例如:java
代码中启动的Intent
的Action
Intent sendIntent = new Intent("String_action");
Androidmanfest.xml 中过滤标签如下:
Androidmanfest 标签声明
<data>
使用一个或多个指定数据 URI
各个方面(scheme、host、port、path
等)和 MIME
类型的属性,声明接受的数据类型。
<category>
在 name
属性中,声明接受的Intent
类别。该值必须是操作的文本字符串值,而不是类常量。
例如:
category 属性使用
禁止其他应用通过Intent 掉起自己组件
android:exported="false"
应用主要入口点Action
<action android:name="android.intent.action.MAIN" />
Launcher 图标入口Action
以下两个元素必须配对使用,Activity
才会显示在应用启动器中。
Launcher 标签入口
注意:
CATEGORY_LAUNCHER
类别指示此Activity
的图标应放入系统的应用启动器。 如果<activity>
元素未使用icon
指定图标,则系统将使用<application>
元素中的图标
4. PendingIntent 使用方法
PendingIntent
对象是Intent
对象的包装器。PendingIntent
的主要目的是授权外部应用使用包含的 Intent
,就像是它从您应用本身的进程中执行的一样。
主要应用于以下场景
通知
NotificationManager
应用小部件
AppWidget
定时任务
AlarmManager
PendingIntent 使用注意事项:
1.PendingIntent.getActivity()
适用于启动 Activity
的 Intent
。
2.PendingIntent.getService()
适用于启动Service
的 Intent
。
3.PendingIntent.getBroadcast()
适用于启动 BroadcastReceiver
的Intent
。
5. Intent 7 大属性
1 . Component Name(目标组件的全类、组件名称)
setComponent(),
getComponent(),
setClass() ,
setClassName()
2 . Action (intent 将执行的动作)
setAction()
getAction()
3 . Data (用于向Action 属性提供操作数据)
URI
对象scheme://host:port/path
(协议头,主机,端口,路径)
4 . Type 分类
指定Data
所指定的Uri
对应的MIME
类型,不指定会根据数据自动推导
5 . Category 类别
为Action
提供额外的附件类别信息,可以有多个Category
,但必须有一个default
。
<!-- 默认分类必须加上,否则会报错 --><category android:name="android.intent.category.DEFAULT"/>
6 . Extra 数据载体
通过键值对进行数据存储,用于多个Action
之间提供数据交换.
7 . Flags 标记
标记组件如何启动,以及启动后如何对待FALG_ACTIVITY_SINGLE_TOP
FALG_ACTIVITY_CLEAR_TOP
等等)
6. 使用ADB调试 Intent
语法
adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
-e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
eg :
adb shell am start -a android.intent.action.DIAL \
-d tel:555-5555 -n org.example.MyApp/.MyActivity
7.Intent 常用方法使用总结
由于总结内容较多,已经另开文章讲述。
Intent 常用方法使用总结
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。
既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取
支付宝搜索 522398497,或扫码支付宝红包海报。支付宝扫一扫,每天领取大红包
2.微信红包,微信扫一扫即可领取红包
微信扫一扫,每天领取微信红包
小礼物走一走,来简书关注我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!