android中intent-filter的分析和具体使用用例

意图过滤器(intent-filter)由清单文件中的元素定义,嵌入在相应的应用组件里(例如元素),在元素里,你可以使用这3个元素中的一个或多个来指定接收的意图类型:

<action>name属性里,声明接收的意图操作,值必须是操作的纯字符串,不是类常量

<data>使用一个或多个属性来声明接收的数据类型,他们表示数据uri,和MIME类型的各个部分

<category>name属性里声明意图分类,值必须是操作的纯字符串,不是类常量

注意:为了接收隐式意图,必须在意图过滤器中包含CATEGORY_DEFAULT分类,startActivity()startActivityForResult()方法认为所有意图都包含了CATEGORY_DEFAULT分类,如果你在意图过滤器中没有声明这个分类,那么没有隐式意图会解析你的活动。

意图过滤器的完整使用示例:

<activity  android:name=".MainActivity">
<!-- 将其标记为主活动-->
            <intent-filter>
                <category android:name="android.intent.category.LAUNCHER" />
                <action android:name="android.intent.action.MAIN" />
<!-- action.MAIN表明操作是主入口点,不期望任何意图数据-->
<!-- category.LAUNCHER表示应该放到系统应用启动里的活动图标,如果该元素没有用icon属性指定图标,那么系统用该元素图标-->

         </intent-filter>
  </activity>
 <activity  android:name=".SecondActivity">
<!-- SecondActivity实现一些文本数据,多媒体文件等操作-->
            <intent-filter>
                            
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="android.intent.action.SEND" />
        <data android:mimeType=”text/plain”/>

         </intent-filter>
 <intent-filter>
               <!-- 再设置一个意图过滤器用来处理一些视频,图片等媒体数据-->
             
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SEND_MULTIPLE" />
        <data android:mimeType=”application/vnd.google.panorama360+jpg”/>
  <!-- 注意,MIME类型,application/vnd.google.panorama360+jpg,是指定全景相片的特定数据类型,可以使用谷歌全景API来处理它->

         <data android:mimeType=”image/*”/>
         <data android:mimeType=”video/*”/>

         </intent-filter>

  </activity>

注意:为了让活动出现在应用启动里,action_MAINcategory_LAUNCHER必须配对在一起,如果只有一个activity的应用程序只声明了android.intent.action.MAIN,没有声明android.intent.category.LAUNCHEReclipse运行将报错。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值