意图过滤器在Android中应用比较广泛,但是我们使用得最多的还是给启动页面设置意图过滤器,这样我们才能在打开一个应用时知道第一个启动的Activity是哪一个.当然Intent-filter不止拥有这一个功能.还可以实现页面和原生的跳转,实现隐式意图的响应等.
- category(类别):category中一般会配置一条默认的参数,“android.intent.category.DEFAULT”,没有这一条参数的Activity无法响应隐式意图.
- action(行为):表示Activity需要执行的动作.
- data(数据):启动activity所需要的资源,为uri类型数据.由scheme、host、port、path、mimeType组成.
- extras:表示该Activity启动时需要的额外数据,通过putExtras()方法设置.
category常用值
-
CATEGORY_DEFAULT:默认值,没有该默认值则无法响应隐式意图
-
CATEGORY_HOME:用于表示该组件是Home Activity.按下Home键后返回到的页面.
-
CATEGORY_VOICE:表示该Activity可以响应声音播放
-
CATEGORY_APP_MUSIC:表示该Activity可以响应音乐播放
-
CATEGORY_APP_MESSAGING:该Activity可以做消息传递
-
CATEGORY_LAUNCHER:常与action android:name="android.intent.action.MAIN"配合使用,用于表名应用的第一个启动的Activity
-
CATEGORY_BROWSABLE :该组件可以通过浏览器打开
复制代码1
2category还有很多值,需要使用到时,自行研究.
Action常用值
- ACTION_MAIN:程序入口
- ACTION_VIEW:通过一个应用来显示数据
- ACTION_EDIT:通过一个应用来修改数据
- ACTION_DIAL:打开默认的拨号应用
- ACTION_CALL:直接拨号,电话号码在data中
- ACTION_ANSWER:接听电话
- ACTION_SEND:由用户指定发送方式进行数据发送操作
- ACTION_SENDTO:转发数据
- ACTION_BOOT_COMPLETED:Android系统在启动完毕后发出带有此Action的广播(Broadcast)
- ACTION_TIME_CHANGED:Android系统的时间发生改变后发出带有此Action的广播(Broadcast)
- ACTION_PACKAGE_ADDED:Android系统安装了新的Application之后发出带有此Action的广播(Broadcast)
- ACTION_PACKAGE_CHANGED:Android系统中已存在的Application发生改变之后(如应用更新操作)发出带有此Action的广播(Broadcast)
Uri类型
1
2
3
4
5
6
7
8tel:// 号码数据格式,后跟电话号码。 mailto:// 邮件数据格式,后跟邮件收件人地址。 smsto:// 短息数据格式,后跟短信接收号码。 content:// 内容数据格式,后跟需要读取的内容。 file:// 文件数据格式,后跟文件路径。 market://search?q=pname:pkgname 市场数据格式,在Google Market里搜索包名为pkgname的应用。 geo://latitude,longitude 经纬数据格式,在地图上显示经纬度指定的位置。
Scheme跳转协议
当我们需要在网页中跳转原生Android应用时,我们可以通过意图过滤器中的scheme协议来实现跳转功能.要实现网页跳转协议还需要包含BROWSABLE的category,否则也无法实现跳转.
1
2
3
4
5
6
7
8<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:scheme="test" android:host="app"/> </intent-filter>
测试:打开一个网页点击<a href=“test://app”/>即可以打开该Activity
带参数跳转
跳转时带参数的URL:<a href=“test://app?a=100&b=99&c=98”/>
在代码中做以下解析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26Uri uri = getIntent().getData(); if (uri != null) { String url = uri.toString(); Log.e(TAG, "Url : " + url); String scheme = uri.getScheme(); Log.e(TAG, "Scheme : " + scheme); String host = uri.getHost(); Log.e(TAG, "Host : " + host); int port = uri.getPort(); Log.e(TAG, "Port : " + port); String path = uri.getPath(); Log.e(TAG, "Path : " + path); String query = uri.getQuery(); Log.e(TAG, "Query : " + query); String authority = uri.getAuthority(); Log.e(TAG, "Authority : " + authority); String token = uri.getQueryParameter("a");//获取指定参数 Log.e(TAG, "Token : " + token); List<String> segments = uri.getPathSegments(); Log.e(TAG, "Segments : " + segments); Set<String> names = uri.getQueryParameterNames(); Log.e(TAG, "QueryParameterNames : " + names); String schemeSpecificPart = uri.getSchemeSpecificPart(); Log.e(TAG, "SchemeSpecificPart : " + schemeSpecificPart); }
最后
以上就是落后红牛最近收集整理的关于Android intent-filter意图过滤器category常用值Action常用值Uri类型Scheme跳转协议的全部内容,更多相关Android内容请搜索靠谱客的其他文章。
发表评论 取消回复