IntentFilter的匹配规则

作者: Android开发知识总结 | 来源:发表于2016-06-04 21:52 被阅读120次

一.Activity的启动方式

(1).显示调用,要明确的指定被启动对象的组件信息,包括包名类名

(2).隐式调用,需要Intent能够匹配目标组件的IntentFilter所设置的过滤信息,过滤信息有action,category,data。为了匹配过滤列表,需要同时过滤列表中的action,category,data信息,否则失败,一个Intent只要能匹配任何一组intent-filter即可成功启动Activity。

过滤规则示例

①. action的匹配规则

action是一个字符串,系统预定义了一些action,同时我们也可以在应用中定义自己的action,Intent中的action必须能够和过滤规则中的任何一个action相同,action区分大小写。

②. category的匹配规则

category是一个字符串,系统预定义了一些category,同时我们也可以在应用中定义自己的category,与action的区别是,如果Intent中含有category,那么所有的category都必须和过滤规则中的其中一个category相同。如果Intent中不含有category,其实系统默认会为Intent添加上“android.intent.category.DEFAULT”。同时为了我们的activity能够接收隐式调用,就必须在intent-filter中指定<categoryandroid:name="android.intent.category.DEFAULT"/>。

③. data的匹配规则

类似于action,如果过滤条件中定义了data,那么Intent中必须也要定义可匹配的data,

data由两部分组成mimeType和URI.URI的结构如下

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

content://com.example.demo:80/file/image/name

http://www.baidu.com:80/search/android

data的语法如下:

<data android:scheme="string" URI模式,如http,file,content

          android:host="string" URI模式,如www.baidu.com

          android:port="string" URI模式,端口号

          android:path="string" URI模式 路径信息

          android:pathPattern="string"

          android:pathPrefix="string"

          android:mimeType="string"/> 

具体使用:

Intent intent = new Intent("android.intent.action.SEND.MULTIPLE");

intent.addCategory("android.intent.category.DEFAULT");

intent.setDataAndType(Uri.parse("content://com.example.demo:80/file"),"image/*");

startActivity(intent);

举例打开QQ

String url="mqqwpa://im/chat?chat_type=wpa&uin=771346371";

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

举例打开简书

String url = "intent://notes/56ea25fbe5cf/#Intent;scheme=jianshu;package=com.jianshu.haruki;end"

startActivity(Intent.parseUri(url,0));

相关文章

  • IntentFilter的匹配规则

    允许转载请注明出处。 IntentFilter的匹配规则 对于初学者来说,学习IntentFilter的匹配规则还...

  • IntentFilter的匹配规则

    IntentFilter的匹配规则 IntentFilter中的过滤信息有action,category,data...

  • IntentFilter匹配规则

  • IntentFilter匹配规则

    首先废话一下,如果要写东西,csdn和简书还是老老实实选简书。不管什么,就冲csdn不会自动保存,简书会自动保存就...

  • IntentFilter匹配规则

    IntentFilter直译过来就是意图过滤器,我们可以通过它的匹配规则去打开我们想要打开的一类Activity,...

  • IntentFilter的匹配规则

    前言 我们知道,启动Activity分为两种,显示调用和隐式调用。这里主要介绍隐式调用的IntentFilter匹...

  • IntentFilter的匹配规则

    启动Activity分为两种,显示调用和隐式调用。显式调用需要明确的指定被启动对象的组件信息,包括包名和类名...

  • IntentFilter的匹配规则

    我们知道,Activity的启动模式分为两种,分别是显式启动和隐式启动。显式启动需要明确的指定被启动的对象的组件信...

  • IntentFilter 的匹配规则

    1. 显示调用与隐式调用   显示调用需要明确指定被启动对象的组件信息,包括类名与包名,隐式调用不需要明确指定组件...

  • IntentFilter的匹配规则

    Activity的隐式调用需要明确指定组件信息。原则一个Intent不应该既是显式又是隐式调用,如果两者共存的话以...

网友评论

    本文标题:IntentFilter的匹配规则

    本文链接:https://www.haomeiwen.com/subject/vfgldttx.html