Android发之深入理解Intent
前边我们提到intent在Activity之间传值点击查看博文
今天详细介绍Intent的相关属性:
Intent的七大属性:
1.intent的作用:
a,包装Android组件
b,启动Activity,启动service,启动广播
c,组件之间相互传值
2.显示启动Activity的属性 //显示是指要启动的Activity是固定的
ComponentName 包装Android组件
三种写法:
new Intent(getApplicationContext(),BActivity.class);
等同于
Intent intent=new Intent();
ComponentName cn=new ComponentName(getApplicationContext(),BActivity.class);
intent.setClass(cn);//设置意图包装的组件
第三种写法
intent.setClass(getApplicationContext(),BActivity.class);
3.隐示启动Activity的属性:
需要通过Action来指定启动的Activity ,这种Activity在注册时必须申明
<intent-filter>
<action android :name="自定义的action名称"/> //名称必须在整个Android应用系统中唯一 一般以类的全限定名
</intent-filter>
Action 属性一般和category一起使用 category用来标示Action启动组件的类型 一般是default类型
android.intent.category.DEFAULT 代表是普通的Activity组件
代码:
a. Intent intent =new intent(“自定义Action的名称”);
b. Intent intent =new Intent();
intent.setAction(“自定义Action的名称”);
在Android.menifest.xml中配置
<activity
android:name=".Activity02"
android:label="第二个页面" >
</activity>
<!-- 可以使用隐式方式启动组件 -->
<activity
android:name=".Activity03"
android:label="第三个页面" >
<intent-filter>
<action android:name="com.example.intent01.Activity03" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
显示启动:
// 显示方式启动Activity02
Intent intent = new Intent();
//intent.setClass(getApplicationContext(), Activity02.class);
intent.setComponent(new ComponentName(getApplicationContext(), Activity02.class));
startActivity(intent);
隐式启动:
startActivity(new Intent("com.example.Intent01.Activity03")); //这是第一种写法
Intent intent=new Intent();
intent.setAction("com.example.Intent01.Activity03");
startActivity(intent); //这是第二种写法
4.data属性:
指定Action之后,将必须的数据设置在此属性中 比如打电话要提供电话号码
对于不同的数据有不同的数据格式 如电话号码 tel:110
5. type属性(mimetype):如果data属性的值是文件路径 必须声明type属性来指定文件类型
如:文本文件 : text / *
6.extra 扩展属性:除了必要的数据以外的扩展数据
常用于Intent传值
7.flag 属性:影响启动组件的特性(运行模式)
常用位置:在广播接收器内,启动Activity组件时,必须设置flag属性:且为Intent.FLAG_NEW_TASK
intent.setFlags(Intent.FLAG_NEW_TASK);
public void call(View view) {
Intent intent=new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086")); //Uri 统一资源标识符
startActivity(intent);
}
public void internet(View view) {
Intent intent=new Intent(Intent.ACTION_VIEW); //查看页面 根据数据类型判断 如果数据类型是网址 就调用浏览器
intent.setData(Uri.parse("http://www.qq.com"));
startActivity(intent);
}
public void share(View view) {
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/*");//选择类型 这里指文本类型
intent.putExtra(Intent.EXTRA_TEXT, "这是分享的内容。。。");
startActivity(intent);
}
分别是打电话,浏览网页,分享 三个小功能
相关的功能还有很多,要自己多练习,多做才能记住熟练运用