有一段时间没有使用从相册选择照片以及拍照功能了,正好这个项目用到了,就翻出原来的demo试了试,发现从相册选择照片的时候,回传会出现“照片无法加载”的情况。上网找了找,发现是android版本的问题,sdk低于19时需要使用另一种方法。于是上网搜了搜,只需要在选择照片的时候判断一下即可,很简单,如下代码。
private void showPhoto1Dialog() {
String[] avatar = { "相册", "拍照" };
ActionSheetDialog dialog = new ActionSheetDialog(this).builder()
.setCancelable(true).setTitle("操作")
.setCanceledOnTouchOutside(true);
dialog.setItems(avatar, new OnSheetItemClickListener() {
@Override
public void onClick(int which) {
if (which == 0) {
Intent intentFromGallery;
//当sdk版本低于19时使用此方法
if (Build.VERSION.SDK_INT < 19) {
intentFromGallery = new Intent(
Intent.ACTION_GET_CONTENT);
intentFromGallery.setType("image/*");
} else {
intentFromGallery = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
startActivityForResult(intentFromGallery,
IMAGEa_REQUEST_CODE);
} else if (which == 1) {
Intent intentFromCapture = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
// 判断存储卡是否可以用,可用进行存储
if (hasSdcard()) {
PhotoAFile = new File(Environment
.getExternalStorageDirectory(),
IMAGEa_FILE_NAME);
intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(PhotoAFile));
}
startActivityForResult(intentFromCapture,
CAMERa_REQUEST_CODE);
}
}
});
dialog.show();
}
上面只是选择照片时的一小部分代码,由于这个demo在网上搜的话基本上是“烂大街”的写法,别的地方没什么区别。还有一点,这个解决方法是我看到别人的,具体是谁的时间久了我忘记了,所以没有标注出处,所以请原作者谅解或者联系我标注,谢谢。好代码,大家分享。