携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情 >> 希望大家可以帮忙点个赞,谢谢!
前言
从接触安卓开发一开始,我们就开始学习Activity这一大组件怎么用,然后就会在Activity之间跳转时遇到Intent。但是Intent的用法着实让我至今还是很困扰,所以把一些使用方法记录下来,方便之后提高这一块知识的理解。
正篇
Intent是安卓特有的,意为意图,我理解为载具,因为它可以把你想要做的想要送达和传递的东西发送和接受到。 它的一些用法如下列举:
Android中一些常见的Intent的习惯用法:
如何通过Intent发送短信、发送邮件、启动摄像机拍照录视频、设置闹铃、打开WIFI设置界面等等
发送短信
示例:
//使用Intent.ACTION_SENDTO
Intent intent = new Intent(Intent.ACTION_SENDTO);
//指定URI使用smsto:协议,协议后面是接收短信的对象
Uri uri = Uri.parse("smsto:10000");
intent.setData(uri);
//设置消息体
intent.putExtra("sms_body", "您的电话费余额已不足");
ComponentName componentName = intent.resolveActivity(getPackageManager());
if(componentName != null){
//跳转
startActivity(intent);
}
如果在构建URI时,只写了smsto:,而没有写后面的电话号码,其实该intent也能启动短信应用,但在启动了短信应用之后,还要我们自己手动输入电话号码。
我们可以通过key为sms_body的extra字段设置短信的内容。
注意: 在startActivity(intent)运行之后,尽管短信应用会启动,可是短信不会直接发出去,而需要我们再点击一下发送消息才可以发出去。
摄像
打开相册选择照片
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
//ALBUM_REQUEST_CODE: 返回和接受值,获取到可以在onActivityResult处理
startActivityForResult(intent, ALBUM_REQUEST_CODE);
处理相册选择的图片获取地址(通过Uri获取图片绝对地址):
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == AppConstants.ALBUM_REQUEST_CODE) {
try {
Uri uri = data.getData();
final String absolutePath= getAbsolutePath(mActivity, uri);
ogUtil.d("path=" + absolutePath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
总结
先列出两个Intent的使用方法,后续再慢慢补充,以及深入源码学习。