Android 通用的Intent介绍


Android 通用的Intent介绍文章插图
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 指定时间和消息等闹铃详细信息 。
操作
【Android 通用的Intent介绍】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 访问照片或视频 。 )


推荐阅读