@作者 : 西野奈留
@博客:http://blog.csdn.net/narunishino
-2016/4/01-
启动者:
如果我们需要在Activity或Service或BroadcastReceiver(以下简称ASB)启动其他ASB的时候,我们要指定一些条件,来启动我们想要启动的ASB(因为有很多其他ASB,不指定的话,系统也不知道你想启动哪个)。//忽略new Intent(this,Xxx.class)这种情况。
于是就有了:
- intent.setComponent(); //基本上不用这个。
- intent.setAction(“narunishino”);
- 一个ASB只能set一个action。
- setActio()的参数为字符串,android给了很多Action常量来启动系统组件。
- intent.addCategory();
- 可以add多个category。
- 如果不添加addCategory()方法的话,系统会自动添加一个默认的category给intent。
- addCategory()的参数为字符串,android给了很多Category常量来使用一些系统功能(我暂时还不清楚怎么用)。
- intent.setData();
- 用于向Action提供操作的数据。
- 参数是Uri对象,例:
- Uri格式为:scheme://host:port/path
- intent.setData(Uri.parse(“lee://www.fkjava.org:8888/test”));
- intent.setType();
- 与setData()互斥。
- 但是可以通过setDataAndType()设置在一起。
- intent.addFlag();
- 添加的是Activity启动模式。
被启动者:
那么其他这些将要被启动的ASB就得在Manifest的自己的<intent-filter>
中指定如下属性来告诉系统自己能响应哪些请求(启动):
- Action属性:
<action android:name=”自己写个字符串上去”/>
//可以写多个action(来响应不同请求)。- 所有包含
<action android:name=”narunishino”/>
的ASB都会跳出来给用户选。
- 所有包含
- Data属性:
<data android:scheme=”” android:host=”” .......... />
-
<data />
中定义了某些参数(设置多少由自己定),启动者(可以设置比被启动者更多的参数)中必须设置了同样的参数才能打开这个ASB(就是说uri中需要包含相同的参数)
-
- Type属性:
<data android:mimeType/>
(是写在data里面的)
总结:我很少用到data和type,所以暂时了解不深。
-End-