android 隐式意图的笔记

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);










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值