Intent 使用方法详解
来源:互联网 发布:批处理自动卸载软件 编辑:程序博客网 时间:2024/06/07 12:59
Intent 是一个消息传递对象,主要用于组建之间的通讯,例如:启动Activity、启动Service、传递Broadcast等
- Intent 主要用途、流程图
- Intent 分类
- 隐式 Intent 接收过滤类型
- PendingIntent 使用方法
- Intent 7 大常用属性
- 使用ADB调试 Intent
- Intent 常用方法使用总结
欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息
我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。
Intent 流程图
1. Intent 主要用途
- 启动Activity
startActivity()
无返回值,直接启动ActivitystartActivityForResult() ,
有返回值,返回值在onActivityResult() 回调
- 启动Service
startService()
一次性操作bindService()
绑定组件,随组件生命周期结束而结束
- 传递Broadcast
sendBroadcast()
普通无序广播sendOrderedBroadcast()
有序广播sendStickyBroadcast()
持续黏性广播
2. Intent 分类
- 1.显示 Intent
按名称(完全限定类名)指定要启动的组件。
例如:
Intent intentActivity=new Intent(MainActivity.this,ActivityMethods.class);startActivity(intentActivity);
- 2.隐式 Intent
不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它
例如:
public static void SendMms(Context context, String mmsString) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString); sendIntent.setType("text/plain"); // 修改 Intnent 选择器Tittle String title = context.getResources().getString(R.string.hello_world); Intent chooser = Intent.createChooser(sendIntent, title); // 验证是否有Activity 接收 if (sendIntent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(chooser); } }
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 中过滤标签如下:
<activity android:name=".OneKeyClearAppsAddActivity"> <intent-filter> <action android:name="String_action" /> </intent-filter> </activity>
- <data>
使用一个或多个指定数据 URI 各个方面(scheme、host、port、path 等)和 MIME 类型的属性,声明接受的数据类型。
- <category>
在 name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。
例如:
<activity android:name="ShareActivity"> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter></activity>
- 禁止其他应用通过Intent 掉起自己组件
android:exported="false"
应用主要入口点Action
<action android:name="android.intent.action.MAIN" />Launcher 图标入口Action
以下两个元素必须配对使用,Activity 才会显示在应用启动器中。
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
注意: CATEGORY_LAUNCHER 类别指示此 Activity 的图标应放入系统的应用启动器。 如果 <activity> 元素未使用 icon 指定图标,则系统将使用 <application> 元素中的图标
4. PendingIntent 使用方法
PendingIntent 对象是 Intent 对象的包装器。PendingIntent 的主要目的是授权外部应用使用包含的 Intent,就像是它从您应用本身的进程中执行的一样。
主要应用于以下场景
通知
NotificationManager应用小部件
AppWidget定时任务
AlarmManager
PendingIntent 使用注意事项:
PendingIntent.getActivity()
适用于启动 Activity 的 Intent。PendingIntent.getService()
适用于启动 Service 的 Intent。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 常用方法使用总结
文章链接如下:
http://www.jianshu.com/p/c8ed98bab620
至此,Intent 相关已经基本完成。
欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息
我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。
点击阅读原文,获取更多福利
- Intent 使用方法详解
- 详解Android中Intent的使用方法
- Intent使用方法
- 详解Android应用开发中Intent的作用及使用方法
- android的intent使用方法
- android的intent使用方法
- android的intent使用方法
- intent的使用方法
- android intent使用方法
- Activity 中 Intent 使用方法。
- android的intent使用方法 .
- Android Intent 使用方法
- android的intent使用方法
- Intent和Bundle使用方法
- Android: Intent详细使用方法
- Intent介绍及使用方法
- Intent详解
- intent详解
- Redis使用三、redis的配置与使用
- ISIS报文结构—P2P IIH
- java是如何实现位移运算的
- Android 实时监听耳机拔除
- 基于 STM32 的硬件 I2C 读取 MPU6050 数据
- Intent 使用方法详解
- 再按一次推出程序
- gulp实战(4)
- http你不得不知道的那些事(一)--同源策略(1)
- Superset的各种疑难解答
- jquery手指触摸滑动放大图片的方法(比较靠谱的方法)
- C语言学习内容总结2017/10/21
- highcharts使用钻取图时去掉横坐标上的超链接样式 。
- nifi中使用PutElasticsearch