第5章intent属性及配置
android第五章Intent和IntentFilter的进行通信
>intent对象的描述
intent的理解
intent用来表示自己的意图:需要启动哪个Activity。两个Activity可以吧需要交换的数据封装成Bundle对象,然后使用Intent来携带Bundle对象,这样就实现了两个Activity对象之间的数据交换组件的启动方法
- Activity
- startActivity(intent)
- startActivity(intent,int)
- Service
- StartService(Intent)
- bindService(inten,seviceConnection,int)
- BroadcastReceiver
- sendBroadcast(intent)
- sendBroadcast(intetn,String)
- sendOrderedBroadcast(intent,String,BraodcastReceiver,Handler,int,String,Bundle)
- sendOrderedBroadcast(intet,String)
- sendStickyBroadcast(intent)
- sendStickyOrderedBroadcast(intent,resultReceiver,scheduler,initialCode,String,Bundle)
- Activity
包含的属性
Component,Action,Category,Data,Type,Extra,Flag
>intent的属性及intent-filter配置
- Component属性
- intent设定component属性的方法:
setClass(Context packageContext,Class<?> cls)
setClassName(Context packageContext,String className)
setClassName(String packageName,String className)
分别通过应用环境接口Context类,component类和字符串的方式实现了指定启动对象的方法 - 启动Activity的中组件的具体方法:
MainActivity.this表示自身,在内部使用外部类的时候这样表示。
1
2
3
4ComponentName comp = new ComponentName(MainActivity.this,secondActivity.class)
Intent intent = new Intent();
intent.setComponent(comp)
startActivity(intent) - intent设定component属性的方法:
- Action属性的配置
是一个字符串,制定Intent要去完成的一个抽象的动作。Action的值可能是intent.ACTION_VIEW,具体查看什么取决于
可以通过setAction方法这只Action属性
1 | Intent intetn = new Intent(); |
Category属性的配置
可以通过add
是一个字符串,为Action增加额外的附加信息。可以指定多个Category要求intent-filter的配置,这是被启动的Activity的配置文件,配置的事目标activity的intent属性,这个是activity的唯一标识。
开始有点理解这些东西了,可能就是一个用来交互的实体类,对于每一个对象的唯一身份标识,只需要创建一个这个实体,就能通过相同的方式启动类,并且通过Bundle传递相应的参数。
1 | <intent-filter> |
指定Action、Category调用系统的Activity
- ACTION_MAIN
- ACTION_VIEW
- ACTON_ATTACH_DATA
- ACTION_ATTACH_DATA
- ACTION_EDIT。。。。。。。
- CATAGORY_DEFAULT
- CATEGORY_BROWSABLE
- CATEGORY_TAB
在intent-filter中,设置用户访问手机的权限
<user-permission android:name”android.permission.READ_CONTACTS”/>设置按钮,系统返回桌面
Data,type属性的配置
向action提供操作的数据,data属性可以接受一个URI对象(scheme:/host:port/path)
content://com.android.contacts/contacts/1
tel:123
Type属性用来指定Data所对应的URI的MIME类型。Toast.makeText(this.intent.toString(),Toast.LENGTH_LONG).show()相当于弹窗程序,可以用来检测数据的值。
–在androidManifest.xml中实现data和type属性的配置方法
其中data元素匹配启动的方式是不完全匹配,只要已经显示定义的值相同就能启动相应的activity。其中如果帮同事这只了Action和Data属性,则能够同时通过两者启动Activity。
当启动了多个Activity时,系统会显示打开这个请求的应用选择界面。也就是说,平时会看到的选择某个应用打开这个文档,就是通过这种方式实现的,通过指定Data和Type属性来定位不同的应用。
通过Action和data属性的组合应用,可以达到和系统交互信息的功能,就是简单的调用系统固有的组件,启动系统中本身存在的Activity
Extra属性
用来在多个Action之间进行数据交互,Extra是一个Bundle对象,类似于C++中的map类Flag属性
为intent添加一些额外的控制标志,通过addFlags()方法实现。- FLAG_ACTIVITY_BROUGHT_TO_FRONT不会被杀死的Activity启动。
- FLAG_ACTIVITY_CLEAR_TOP弑父线程
- FLAG_ACTIVITY_NEW_TASK创建一个新的Ativity
- FLAG_ACTIVITY_NO_ANIMATION不使用过度动画
- FLAG_ACTIVITY_NO_HISTORY将被启动线程弹出工作栈
- FLAG_ACTIVITY_REORDER_TO_FRONT带到前台
- FLAG_ACTIVITY_SINGLE_TOP只会启动一个这样的activity




