IntentFilter 匹配规则(网页中启动Activity)

先来一个实例代码:

<intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*"/>
            </intent-filter>

action匹配规则

Intent中的action必须能够和intent-filter中的某一个匹配成功,可以多个,只要有一个成功即可匹配成功,但是如果Intent中如果不存在action则匹配失败

category匹配规则

Intent中的category每一个都要跟intent-filter中的某一个匹配成功,Intent中可以不指定,系统会默认为Intent加上android.intent.category.DEFAULT

data匹配规则

<data
  android:scheme="sttring"
  android:host="string"
  android:port="string"
  android:path="string"
  android:pathPattern="string"
  android:pathPrefix="string"
  android:mimeType="string"/>

URI结构
<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]

示例
http://www.baidu.com:80/search/info

content://com.example.project:200/folder/subfolder/etc

规则:Intent中必须存在data,且data能完全匹配intent-filter中某一个data

注:若没有指定URI,则默认为content和file
例:

<intent-filter>
  <data android:mimeType="image/*"/>
</intent-filter>
intent.setDataAndType(Uri.parse("file://abc"),"image/png");

网页中启动Activity

AndroidManifest.xml中

<activity android:name=".activity.TestActivity">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
      android:host="test"
      android:scheme="testapp" />
  </intent-filter>
</activity>

网页中

<a href="testapp://test?id=100101&title=HelloAndroid">StartTestActivity</a>

Activity中获取参数

Uri data = intent.getData();
   if(data != null){
       String scheme = data.getScheme();
       String host = data.getHost();
       darenId = data.getQueryParameter("id");
       userId = data.getQueryParameter("title");}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值