显示intent跳转和隐式intent跳转的区别。_Android 通用的Intent介绍

f8155fdbe36fcd34ecb09495b565d8ab.png

Intent 用于通过描述您想在某个 Intent 对象中执行的简单操作(如“查看地图”或“拍摄照片”)来启动另一应用中的某个 Activity。这种 Intent 称作隐式 Intent,因为它并不指定要启动的应用组件,而是指定一项操作并提供执行该操作所需的一些数据

当您调用 startActivity() 或 startActivityForResult() 并向其传递隐式 Intent 时,系统会将 Intent 解析为可处理该 Intent 的应用并启动其对应的 Activity。如果有多个应用可处理 Intent,系统会为用户显示一个对话框,供其选择要使用的应用。

本页面介绍几种可用于执行常见操作的隐式 Intent,按处理 Intent 的应用类型分成不同部分。此外,每个部分还介绍如何创建 Intent 过滤器来公布您的应用执行相应操作的能力。

PS :如果设备上没有可接收隐式 Intent 的应用,您的应用将在调用 startActivity() 时崩溃。如需事先验证是否存在可接收 Intent 的应用,请对 Intent 对象调用 resolveActivity()。如果结果为非空,则至少有一个应用能够处理该 Intent,并且可以安全调用 startActivity()。如果结果为空,则您不应使用该 Intent。如有可能,您应禁用调用该 Intent 的功能。

闹钟类型


创建闹铃

创建新闹铃,需要使用 ACTION_SET_ALARM 操作并使用下文介绍的 extra 指定时间和消息等闹铃详细信息。

操作

ACTION_SET_ALARM

Extra

EXTRA_HOUR (闹铃的小时)

EXTRA_MINUTES(闹铃的分钟)

EXTRA_MESSAGE (用于标识闹铃的自定义消息)

EXTRA_DAYS (一个 ArrayList,其中包括应重复触发该闹铃的每个工作日,每一天都必须使用 Calendar 类中的某个整型值(如 MONDAY)进行声明,对于一次性闹铃,无需指定此 extra)

EXTRA_RINGTONE(一个 content: URI,用于指定闹铃使用的铃声,也可指定 VALUE_RINGTONE_SILENT 以不使用铃声,如需使用默认铃声,则无需指定此 extra)

EXTRA_VIBRATE(一个布尔型值,用于指定该闹铃触发时是否振动。EXTRA_SKIP_UI一个布尔型值,用于指定响应闹铃的应用在设置闹铃时是否应跳过其 UI。若为 true,则应用应跳过任何确认 UI,直接设置指定的闹铃)

例子:

public void createAlarm(String message, int hour, int minutes) {    Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)            .putExtra(AlarmClock.EXTRA_MESSAGE, message)            .putExtra(AlarmClock.EXTRA_HOUR, hour)            .putExtra(AlarmClock.EXTRA_MINUTES, minutes);    if (intent.resolveActivity(getPackageManager()) != null) {        startActivity(intent);    }}

注意:在调用前需要添加闹钟权限

配置跳转的activity 过滤器

                        

相机类型


拍摄照片或视频并将其返回

如需打开相机应用并接收拍摄的照片或视频,请使用 ACTION_IMAGE_CAPTURE 或 ACTION_VIDEO_CAPTURE 操作。此外,还可在 EXTRA_OUTPUT extra 中指定您希望相机将照片或视频保存到的 URI 位置。

操作

ACTION_IMAGE_CAPTURE 或ACTION_VIDEO_CAPTURE

Extra

EXTRA_OUTPUT(相机应用应将照片或视频文件保存到的 URI 位置(以 Uri 对象形式)

当相机应用成功将焦点归还给您的 Activity(您的应用收到 onActivityResult() 回调)时,您可以按通过 EXTRA_OUTPUT 值指定的 URI 访问照片或视频。)

static final int REQUEST_IMAGE_CAPTURE = 1;static final Uri locationForPhotos;public void capturePhoto(String targetFilename) {    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);    intent.putExtra(MediaStore.EXTRA_OUTPUT,            Uri.withAppendedPath(locationForPhotos, targetFilename));    if (intent.resolveActivity(getPackageManager()) != null) {        startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);    }}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {        //返回的图片数据        Bitmap thumbnail = data.getParcelableExtra("data");        ...    }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值