Android7.0之从零开始:Intent及IntentFilter
来源:互联网 发布:聂士成 知乎 编辑:程序博客网 时间:2024/06/07 02:40
快速上手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及IntentFilter
- Intent及IntentFilter详解
- Android开发之Intent及IntentFilter的探究学习
- Android 之 Intent 和 IntentFilter
- Android的Intent&IntentFilter Intent属性及Intent-filter配置
- Intent、IntentFilter
- intent/intentFilter
- Intent&IntentFilter
- android之Intent、IntentFilter、IntentService、PendingIntent
- Android Intent学习之 隐式意图&IntentFilter的作用
- Android 复习笔记之图解Intent和IntentFilter
- Android7.0使用Intent打开文件
- Intent 和IntentFilter
- Intent 和IntentFilter
- Intent和IntentFilter详解
- Intent 和 IntentFilter
- Intent 和 IntentFilter
- intent和intentfilter详解
- 学习小结
- 最大值次大值
- 今日头条面试算法题——确定ABCDE五个学校名次
- Day01-学习第一天
- Centreon监控主从配置
- Android7.0之从零开始:Intent及IntentFilter
- 搭建自动化框架selenium+java+testng
- ab压力测试
- C#读网卡MAC地址-WMI方法
- c++模板类&&模板函数
- 原生js ajax 操作
- MySql修改配置允许远程连接
- OpenGL的矩阵变换详解——有图有真相
- Html部分使用元素英文