概述
意图过滤器在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 :该组件可以通过浏览器打开
category还有很多值,需要使用到时,自行研究.
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类型
tel:// 号码数据格式,后跟电话号码。
mailto:// 邮件数据格式,后跟邮件收件人地址。
smsto:// 短息数据格式,后跟短信接收号码。
content:// 内容数据格式,后跟需要读取的内容。
file:// 文件数据格式,后跟文件路径。
market://search?q=pname:pkgname 市场数据格式,在Google Market里搜索包名为pkgname的应用。
geo://latitude,longitude 经纬数据格式,在地图上显示经纬度指定的位置。
Scheme跳转协议
当我们需要在网页中跳转原生Android应用时,我们可以通过意图过滤器中的scheme协议来实现跳转功能.要实现网页跳转协议还需要包含BROWSABLE的category,否则也无法实现跳转.
<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”/>
在代码中做以下解析
Uri 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 intent-filter意图过滤器category常用值Action常用值Uri类型Scheme跳转协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复