android 隐式意图的笔记

来源:互联网 发布:阿里云客服中心 编辑:程序博客网 时间:2024/05/14 10:32

android中的意图分为显示意图和隐式意图。显示意图明确指出了所要激活的组件,而显示意图则不是。

在隐式意图中,一般通过action 、category 、data指定意图要转向的组件(以activity为例):

清单文件中的配置:

 <activity
            android:name="com.example.intent.OtherActivity"
            android:label="@string/title_activity_other" >
            <intent-filter>
                <action android:name="xxx"/>
                <action android:name="yyy"/>
                <category android:name="xxx"/>
                <category android:name="android.intent.category.DEFAULT"/>
                
                <data android:mimeType="image/*"/>
                <data android:scheme="zzz"/>
                <data  android:scheme="fff" android:host="www.test.cn" android:port="8080" android:path="/intent" />
            </intent-filter>
</activity>


(1)如果未指定data的情况下:在MainActivity中设定

Intent intent = new Intent();
intent.setAction("xxx");
intent.addCategory("xxx");   当前类别在intent-filter中不存在
startActivity(intent);

就可以通过<intent-filter>找到需要进一步处理的活动。

注:

1.在通过隐式意图激活组件的时候默认的会给intent添加一个类别android.intent.category.DEFAULT,
            因此在清单文件的intent-filter中需要添加一个默认类别<category android:name="android.intent.category.DEFAULT"/>否则报错
            2. 通过intent设置的action以及category的对应值必须在清单文件中都存在。


(2)如果需要指定data,    android:scheme属性规定了数据的格式必须以zzz://或者fff://开头  android:host 为主机名  android:port:端口号android:path:路径

Intent intent = new Intent();
intent.setData(Uri.parse("fff://www.test.cn:8080/intent"));
startActivity(intent);

(3)如果需要同时指定数据以及类型:则在程序中需要同时设定

Intent-Filter中的<data>有一个mimeType . 它的作用是告诉Android系统本Activity可以处理的文件的类型。如设置为 “image/gif”表示可以处理“.gif”图像文件

Intent intent = new Intent();
intent.setDataAndType(Uri.parse("fff://www.test.cn:8080/intent"), "image/gif");
startActivity(intent);










0 0
原创粉丝点击