Intent属性
- Intent 的作用
- 实现 Activity 的跳转
- 开启一个服务(Service)
- 传递广播(Broadcast)
一、Intent属性
1、ComponentName组件名
- 可以用这个东西指定要跳转的 Activity
- 其实前面我们用的就是下面的简化的写法,本质就是用 ComponentName 指定了要跳转的 Activity
ComponentName cName = new ComponentName(MainActivity.this,NextActivity.class);
intent.setComponent(cName);
startActivity(intent);
//简化为
Intent intent = new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);
2、action动作
- Action属性代表intent要执行的动作
- 系统提供如下常用的Action属性
ACTION_MAIN:应用程序入口点
ACTION_VIEW:显示指定数据
ACTION_DIAL:显示拨打电话界面
ACTION_CALL:向指定用户打电话
ACTION_SENDTO:向指定用户发送信息
3、data数据&Type(MIME类型)
data
- Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定
- ACTION_EDIT Action应该和要编辑的文档URI Data匹配,ACTION_VIEW应用应该和要显示的URI匹配
- Data属性是一个Uri对象,本质上是个字符串,常用值如下
tel::号码数据格式,后面跟电话号码
mailto::邮件数据格式,后面跟邮件收件人地址
smsto::短信数据格式,后面跟短信接收人
content::内容数据格式,后面跟需要读取的内容
file::文件数据格式,后面跟文件路径
market://search?q=pname:pkgname:市场数据格式。GoogleMarket中搜索应用
geo://lantitude,lontitude:经纬数据格式,地图上显示经纬度
// 给10086发送内容为“Hello”的短信
Uri uri = Uri.parse("smsto:10086");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "Hello");
startActivity(intent);
type
- Type是对Data的类型作进一步的说明。Type在manifest中的设置同样也在
<data>
标签中,是data的mimeType属性。 - mimeType包括许多文件类型,包括图片、视频、音频等等,每种类型下也可以包含多种文件格式,以下举例部分
4、Category类别
- Category属性为 action 提供额外的附加附加类别信息
- 一个 intent 只能有一个 action,但是可以有多个 category
- 系统提供如下常用的Category属性
CATEGORY_DEFAULT:默认的Category
CATEGORY_BROWSABLE:能被浏览器安全调用
CATEGORY_LAUNCHER:该应用的入口Activity
CATEGORY_HOME:随系统启动而运行
1.CATEGORY_LAUNCHER需要和ACTION_MAIN同时设置(点击图标的入口)
2.如果是从其他应用跳入需要设置ACTION_MAIN
5、Extras
- 用于多个 action 之间的数据的交换,是一个 Bundle对象,通过键值对进行数据的存储
6、Flags
- Intent可调用addFlags()方法来为Intent添加控制标记,即设置启动模式
- 可设置的属性部分如下:
FLAG_ACTIVITY_NEW_TASK:默认的跳转类型,会重新创建一个新的Activity(第一种)
FLAG_ACTIVITY_SINGLE_TOP:相当于Activity加载模式中的singletop(第二种)
FLAG_ACTIVITY_CLEAR_TOP:相当于加载模式中的SingleTask(第三种)
FLAG_ACTIVITY_REORDER_TO_FRONT:如果activity在task存在,拿到最顶端,不会启动新的Activity
FLAG_ACTIVITY_NO_HISTORY:被启动的Activity一旦退出,他就不会存在于栈中
参考:https://www.cnblogs.com/anni-qianqian/p/5302947.html
Intent种类和过滤器
一、Intent 种类
二、Intent 过滤器
1、基本描述
- 当我们使用隐式的 Intent 的时候,往往需要设置 action、data 或者 category
- 安卓就是通过我们给 Activity 设置的 Intent 过滤器来匹配我们给 Intent 设置的这些选项的
- 最后就会转到能够匹配上的 Activity 的界面
2、查看大图实现
- manifest xml 关键代码
<activity android:name=".ShowActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- MainActivity 关键代码
Button button = (Button)findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(intent.ACTION_VIEW);
startActivity(intent);
}
});
- 最终效果