显式启动
Intent构造器
(指明启动的组件);
隐式启动
(不会指明启动的组件)
显式启动的几种方式
1查看Intent构造
安卓推荐的构造方式
public Intent(
Context packageContext,--上下文对象
Class> cls--目标组件.class
) {
mComponent =
new ComponentName(packageContext, cls);
}
//其他类别创建显式意图的方式
public Intent setComponent(
ComponentName component) {
mComponent = component;
return this;
}
public Intent setClassName(
Context packageContext,上下文对象
String className:目标组件完整路径名
) {
mComponent = new ComponentName(packageContext, className);
return this;
}
public Intent setClassName(
String packageName,起始组件包名
String className->目标组件完整路径名
) {
mComponent = new ComponentName(packageName, className);
return this;
public Intent setClass
(Context packageContext,上下文对象
Class> cls目标组件.class
) {
mComponent = new ComponentName(packageContext, cls);
return this;
}
}
----
测试显示的启动
1创建目标界面(activity)
绑定一个布局
注意activity要主配置文件进行注册
2当前界面添加按钮-->初始化设置监听器
android:onClick="按钮点击事件的名称"
要求acitivity添加对应事件
对单击事件做出处理
activity层必须添加方法
语法
public void 方法名(View v){
处理单击事件
}
3按钮单击事件进行测试
----------显式测试内容
1.intent(上下文对象,目标组件.class);-->安卓推荐
2.setClass方式-->安卓不推荐
intent.setClass(上下文对象, 目标组件.class)
测试步骤
1>创建一个无参的intent对象
2>用setClass()方法来显示跳转目标
startByClass()-->测试
3.setClassName 方式
测试步骤
1>创建一个无参构造
2>调用setClassName 进行目标组件的绑定
startByClassName1()
setClassName(
packageContext,-->上下文对象
className-->目标组件完整路径名(参照主配置文件)
)
4.通过setConpent()来指定目标--->推荐
测试步骤
1>创建无参intent
2>创建compentName 对象
3>将compentName对象绑定给intent
--------------------------------------
隐式启动(组件名或者指向不可见);
1隐式启动安卓系统内置组件
1>调用系统组件进行电话呼出
测试步骤
打电话的权限
android.permission.CALL_PHONE
创建一个intent(action)Intent.ACTION_CALL
给intent绑定data(Uri)
Uri data = Uri.parse("tel://10086")
startactivity(intent)
2>调用系统拨号界面
步骤
创建intent(action)
Intent.ACTION_DIAL
绑定data(Uri)
data = Uri.parse("tel://10086");
3>上网
创建intent(action)
Intent.ACTION_VIEW
绑定data(Uri)
data = Uri.parse("http://网址");
4>播放媒体文件
创建intent(action)
Intent.ACTION_VIEW
绑定data(Uri)
data = Uri.parse("file://文件的路径");
MP3播放
5>发送短信
(API等级高于或等于19)
1.SmsManager 需要使用权限
android.permission.SEND_SMS
2.创建SmsManager对象
SmsManager.getDefault();
3.发送短信
sendTextMessage:可用于发送短信
public void sendTextMessage(
String destinationAddress,:电话
String scAddress,:短信中心号码null
String text,发送的内容
PendingIntent sentIntent:,发送短信成功后后续操作null
PendingIntent deliveryIntent:发送短信失败作操作null
) {
}
public ArrayList
divideMessage(String text) {
将短信息进行拆分(拆分标准 中文70英文140)
}
不受api等级限制发送
直接调用系统的发送短信工具
4 新建任务栈让acitivity 执行出栈的操作
步骤
intent(action);
setflag(标记)
addcategory(额外信息);
启动--activity结束
2自定义隐式启动(必须要掌握)
步骤
1>当前页
//创建的intent包含过滤器里的条件
条件为多个的则需要每个条件都要和目标组件对应
2>目标页
在acitivity标签创建
在标签内部添加对应的匹配条件
必备标签
3>书写过滤器
一个过滤器可以有多个action
一个activity可以有多个
intent-filter()也要保证每个过滤器里都有
安卓系统匹配的时候只要和其中一条action匹配上就可以跳转
------------------------------------
intent 数据传递
1激活组件
2数据的传递
Extra
存数据 put...();
取数据 get..();
大哥 真棒 向您看齐
大哥 真棒 向你看齐