概述
快速上手intent及intentFilter。
1.Intent及intentFilter的介绍
Intent 中文意思 “意图“,一般用组件间的通信。可用来激活Activity,Service,BroadCast Recevier。
激活Activity startActivity(intent);
激活Service startService(intent);
激活Broadcast sendBroadcast();
intent通信分显性和隐形,而intentFilter是实现隐形的intent通信。
2.Intent简单用法
只需要这两排代码就可以实现活动之间的跳转。
new Intent()中的第一个参数是当前活动,第二个是想要转去的目标活动。
Intent intent = new Intent(MainActivity.this,IntentFilterActivity.class);
startActivity(intent);
我们可以在跳转的时候,传递一些信息
Intent intent = new Intent(MainActivity.this,IntentFilterActivity.class);
intent.putExtra(String类型的key,任意类型的value);
startActivity(intent);
而取出传递信息只需要在目标Activity中如下操作
Intent intent = getIntent();
//所存信息的类型 例如
String answer = intent.get("key");
当然我们还可以 刷新我们当前的activity;
可以通过
Intent intent =getIntent();
finish();
startActivity(intent);
3.IntentFilter的用法
当我们不想显性表露我们的意图可以使用 IntentFIlter
简单来说,我们可以通过 intent.setAction(), .setData(), .addCategory();
对intent添加标识符,然后通过intentFilter通过action,data,category识别出自己的intent,然后触发相应组件。
不需要设置 intentFilter,就可以通过setAction以下关键字,启动一些系统自带的服务。(只列出了一些常用的)
1 Intent.ACTION_MAIN
标识Activity为一个程序的开始
intent.setAction(Intent.ACTION_MAIN);
2 Intent.Action.DIAL
调用拨号面板
更多请见官方api
https://developer.android.com/reference/android/content/Intent.html
intentFilter分别有三个内容: action ,data, category
3.1 action
intent-filter 至少有一个 action ,否则无法与任何intent匹配
intent 通过方法intent.setAction(“”);设置action,只要与 intent-filter 中的一条 action 匹配(如果没有data category或者这两个都匹配) 则触发相应组件。
如果同时匹配两个intentFilter,你将发现非常有趣的现象。
3.2 category
intent 通过方法 intent.addCategory();添加 category。而只有当与intentFilter中 category 全部匹配才能 触发相应事件。
3.3data
而 data 和 setData(); 是通过 scheme, host, port, path, pathPrefix, pathPattern 是用来匹配 Intent 中的 Data Uri 的。
可通过
intent.setData(url);
配置
然后
在intentFilter中采用
< data android:scheme="scheme"
android:host="host"
android:port = "port"
android:path = "path"
进行匹配
3.4 mimeType (补充:也可用来匹配Intent)
如果Intent 使用了 intent.setType(“key”);,那么所有注册了android:mimeType = “key“的活动都会匹配到。
最后
以上就是疯狂夕阳为你收集整理的Android7.0之从零开始:Intent及IntentFilter1.Intent及intentFilter的介绍2.Intent简单用法3.IntentFilter的用法的全部内容,希望文章能够帮你解决Android7.0之从零开始:Intent及IntentFilter1.Intent及intentFilter的介绍2.Intent简单用法3.IntentFilter的用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复