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);
     }
    }
   }
  }

}

android 4.0 调用相册 返回uri为空的问题,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。