Android 调用系统图库

发布于 2024-06-13 23:17:34 字数 1433 浏览 12 评论 0

上面一篇讲到 Android 调用系统相机时遇到的兼容性问题,没想到选择系统图库的时候竟然也遇到了系统兼容性问题,郁闷之极无以言表,在这里记录下解决方案吧。

首先是调用系统默认图库代码:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, SELECT_PHOTOS_REQUEST_CODE);

下面是关键的拿到图片的处理代码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
	switch (requestCode) {
	case SELECT_PHOTOS_REQUEST_CODE:
	    if (resultCode == RESULT_OK) {
			Uri uri = data.getData();
			// 取得返回的 Uri,基本上选择照片的时候返回的是以 Uri 形式,但是在拍照中有得机子呢 Uri 是空的,所以要特别注意
			if (uri != null) {
				Bitmap image;
				try {
					// 这个方法是根据 Uri 获取 Bitmap 图片的静态方法
					image = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
					postImage.setImageBitmap(image);
					imageLayout.setVisibility(View.VISIBLE);
					mUri = uri;
				} catch (Exception e) {
					e.printStackTrace();
				}
			} else {
				Bundle extras = data.getExtras();
				if (extras != null) {
					// 这里是有些拍照后的图片是直接存放到 Bundle 中的所以我们可以从这里面获取 Bitmap 图片
					Bitmap image = extras.getParcelable("data");
					if (image != null) {
						postImage.setImageBitmap(image);
						imageLayout.setVisibility(View.VISIBLE);
						mUri = BitmapUtil.getImageUri(ctx, image);
					}
				}
			}
		}
		break;
	}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

夜灵血窟げ

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

13886483628

文章 0 评论 0

流年已逝

文章 0 评论 0

℡寂寞咖啡

文章 0 评论 0

笑看君怀她人

文章 0 评论 0

wkeithbarry

文章 0 评论 0

素手挽清风

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文