Android 基础知识系列之 Intent

640?wx_fmt=gif

640?wx_fmt=gif

极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能

640?wx_fmt=jpeg

Intent 是一个消息传递对象,主要用于组建之间的通讯,例如:启动Activity、启动Service、传递Broadcast

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

  1. Intent 主要用途、流程图

  2. Intent 分类

  3. 隐式 Intent 接收过滤类型

  4. PendingIntent 使用方法

  5. Intent 7 大常用属性

  6. 使用ADB调试 Intent

  7. Intent 常用方法使用总结

Intent 流程图

640?wx_fmt=other

Intent 流程图

1. Intent 主要用途

1. 启动Activity

  • startActivity()Activity

  • startActivityForResult()

2. 启动Service

  • startService()

  • bindService()

3. 传递 Broadcast

  • sendBroadcast()

  • sendOrderedBroadcast()

  • sendStickyBroadcast()

2. Intent 分类

1.显示 Intent

按名称(完全限定类名)指定要启动的组件。

640?wx_fmt=jpeg

显示 Intent启动Activity

2.隐式 Intent

不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它

640?wx_fmt=jpeg

隐式启动Intent

3. 隐式Intent 接收过滤类型

应用可以接收哪些隐式Intent,请在清单文件中使用 <intent-filter>元素为每个应用组件声明一个或多个 Intent过滤器。每个 Intent 过滤器均根据 Intent的操作、数据和类别指定自身接受的Intent类型。 仅当隐式Intent 可以通过Intent过滤器之一传递时,系统才会将该 Intent传递给应用组件。

<action>

在 name属性中,声明接受的 Intent操作。该值必须是操作的文本字符串值,而不是类常量。

例如:java 代码中启动的IntentAction

Intent sendIntent = new Intent("String_action");

Androidmanfest.xml 中过滤标签如下:

640?wx_fmt=jpeg

Androidmanfest 标签声明

<data>

使用一个或多个指定数据 URI 各个方面(scheme、host、port、path等)和 MIME 类型的属性,声明接受的数据类型。

<category>

在 name 属性中,声明接受的Intent 类别。该值必须是操作的文本字符串值,而不是类常量。

例如:

640?wx_fmt=jpeg

category 属性使用

禁止其他应用通过Intent 掉起自己组件

android:exported="false"

应用主要入口点Action

<action android:name="android.intent.action.MAIN" />

Launcher 图标入口Action

以下两个元素必须配对使用,Activity才会显示在应用启动器中。

640?wx_fmt=jpeg

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_TOPFALG_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 常用方法使用总结

640?wx_fmt=other

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

640?wx_fmt=other

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

640?wx_fmt=jpeg

既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取

  1. 支付宝搜索 522398497,或扫码支付宝红包海报。支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值