Android 朝花夕拾: Intent
Intent
Intent 作为android系统中,重要的通信组件,可以让系统找到,后面作者新添加进来的程序.系统也正是 通过它,与第三方程序,协同无缝合作.
Intent,接受方,主要有: ①Activity ;②Service;③BroadcastReceiver(一般用于通知一些系统事件,比如拔插SD卡,电池电量低,有电话call in)
intent中,重要的两个元素是: ① Action,用来标识这个intent,期望进行的操作(这些操作,由android事先已经定义);②data,数据,这些操作基于的哪些数据上进行.常用的主要是Uri对象.
Intent中,ACTION_MAIN
表示, 接收方为程序的入口.一般和 CATEGORY_LUNCHER 联合使用如下:
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
CATEGORY_LUNCHER,代表这个程序,会在luncher中可见.
Intent中众多的Action中,比较容易混淆的是 ACTION_PICK和ACTION_GET_CONTENT.他们都是期望Intent接受者,选中某个item后,返回给调用者; 不同的是: 前者(PICK),主要用于传入的data是一个数据集(vnd.android.cursor.dir)的情况,根据数据集中提供的几个数据,让customer选中一个数据,并返回.后者(GET_CONTENT),传入的data,是单个数据(vnd.android.cursor.item) ,一般是某个类型,系统根据这个类型,会启动对应的(第三方)Activity,并通过启动的Activity,选中一个数据并返回给调用者.
当要 启动第三方程序,并获取一个选中的item时. 要在启动第三方Activity时,使用startActivityForResult(Intent intent), 调用者中重写onActivityResult()方法来获取,在第三方Activity中,选中的item数据.