Android隐式转跳

引言

当我们需要调用系统组件中的各项自带资源时,需要使用到隐式启动activit样式,例如调用系统的短信,电话,相机等功能时。

Activity的隐式跳转:

不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。

直接setAction方法

1
2
3
Intent intent = new Intent();
intent.setAction("com.abc.view.fling");
startActivity(intent);

或者构造方法设置Action

1
2
Intent intent = new Intent("com.abc.view.fling");
startActivity(intent);

注意:com.abc.view.fling 这个是自己顺便取的action 标记,自己的取名一般是包名+特定的命名

AndroidManifest 里面:

1
2
3
4
5
6
7
<activity android:name=".FlingActivity">
<intent-filter>
<action android:name="com.hly.view.fling"/>

<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

Intent组成元素的列表说明

元素名称 设置方法 说明与用途
Component setComponent 组件,用于指定Intent的来源与目的
Action setAction 动作,用于指定Intent的操作行为
Data setData 即Uri,用于指定动作要操纵的数据路径
Category setCategory 类别,用于指定Intent的操作类别
Type setType 数据类型,用于指定Data类型的定义
Extras setExtras 扩展信息,用于指定装载的参数信息
Flags setFlags b标志位,用于指定Intent的运行模式(启动标志)

系统动作的取值说明

Intent类的系统动作常量名 系统动作的常量值 说明
ACTION_MAIN android.intent.action.MAIN App启动时的入口
ACTION_VIEW android.intent.action.VIEW 显示数据给用户
ACTION_EDIT android.intent.action.EDIT 显示可编辑的数据
ACTION_CALL android.intent.actionCALL 拨号
ACTION_DIAL android.intent.action.DIAL 打电话
ACTION_SEND android.intent.action.SEND 发短信
ACTION_ANSWER android.intent.action.ANSWER 接电话
ACTION_SEARCH android.intent.action.SEARCH 导航栏上SearchView的搜索动作

代码用例

1.自定义转跳位置

1
2
3
4
5
6
7
//自定义转跳位置
public void toCustom(View view) {
Intent intent = new Intent();
intent.setAction("com.example.activityjump16_2.CustomActivity");
startActivity(intent);

}

2.打开外部链接

1
2
3
4
5
6
7
8
//打开外部链接
public void toBaidu(View view) {
Intent intent = new Intent();
// intent.setAction("android.intent.action.VIEW");
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}

3.打开相机

1
2
3
4
5
6
//打开相机
public void toCamera(View view) {
Intent intent = new Intent();
intent.setAction("android.media.action.IMAGE_CAPTURE");
startActivity(intent);
}

4.打电话

1
2
3
4
5
6
7
//打开相册
public void toPhoto(View view) {
Intent intent = new Intent();
intent.setAction("android.intent.action.PICK");
intent.setType("image/*");
startActivity(intent);
}

5.发短信

1
2
3
4
5
6
7
8
//发短信
public void sendSms(View view) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:124"));
intent.putExtra("sms_body", "你好啊,这是给你的短信");
startActivity(intent);
}
  intent.setClass(this,ActResponseActivity.class);

           (3)调用setComponent方法指定:

                    Intent intent = new Intent();
                    ComponentName component = new ComponentName(this,ActResponseActivity.class);
                    intent.setComponent(component);

引用链接:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_37868230/article/details/81165987