android 4.0 调用相册 返回uri为空的问题
之前在网上找了很多调用相册和手机相机的demo,但是在android4.0上运行的话调用相册时都会抛异常,后来在朋友的帮助下换了一个方法,很简单,希望对大家有帮助,解决了调用本地相册的问题。欢迎发现问题的朋友多多交流。以下是代码
AlertDialog.Builder
localBuilder = new AlertDialog.Builder(
MsgActivity.this).setTitle("选择相片");
String[]
arrayOfString = new String[2];
arrayOfString[0] =
"拍一张新相片";
arrayOfString[1] =
"从相册中选取";
localBuilder
.setItems(arrayOfString,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface
paramDialogInterface,
int paramInt)
{
switch (paramInt)
{
default:
case
0:
getPicFromCapture();
break;
case 1:
getPicFromContent();
break;
}
}
}).setNegativeButton("取消",
null).show();
private void getPicFromCapture()
{
try {
//
拍照我们用Action为MediaStore.ACTION_IMAGE_CAPTURE,
//
有些人使用其他的Action但我发现在有些机子中会出问题,所以优先选择这个
Intent intent
= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
} catch
(Exception e) {
e.printStackTrace();
}
}
private
void getPicFromContent() {
try
{
//
选择照片的时候也一样,我们用Action为Intent.ACTION_GET_CONTENT,
//
有些人使用其他的Action但我发现在有些机子中会出问题,所以优先选择这个
Intent intent
= new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 2);
} catch
(ActivityNotFoundException e)
{
}
}
@Override
protected
void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode != RESULT_OK)
{
return;
}
if (data
!= null) {
//
取得返回的Uri,基本上选择照片的时候返回的是以Uri形式,但是在拍照中有得机子呢Uri是空的,所
以要特别注意
Uri mImageCaptureUri = data.getData();
//
返回的Uri不为空时,那么图片信息数据都会在Uri中获得。如果为空,那么我们就进行下面的方式获
取
if (mImageCaptureUri != null) {
Bitmap
image;
try {
// 这个方法是根据Uri获取Bitmap图片的静态方法
image =
MediaStore.Images.Media.getBitmap(
this.getContentResolver(), mImageCaptureUri);
if (image != null) {
commentphoto.setImageBitmap(image);
}
} catch (Exception e)
{
e.printStackTrace();
}
} else {
Bundle
extras = data.getExtras();
if (extras != null)
{
//
这里是有些拍照后的图片是直接存放到Bundle中的所以我们可以从这里面获取
Bitmap图片
Bitmap image =
extras.getParcelable("data");
if (image
!= null) {
commentphoto.setImageBitmap(image);
}
}
}
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。