前言
从接触安卓开发一开始,我们就开始学习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的使用方法,后续再慢慢补充,以及深入源码学习。