Android从图库选择照片

从机里取照片,开头用网上找的代码测试,导致类似下面这样的Crash:
java.lang.RuntimeException: Failure delivering result
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/1909 from pid=29038, uid=10236
requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

好在在这里找到解决了
http://developer.android.com/samples/StorageClient/src/com.example.android.storageclient/StorageClientFragment.html#l233

用里面的getBitmapFromUri方法就行:

        /** Create a Bitmap from the URI for that image and return it.
         *
         * @param uri the Uri for the image to return.
         */
        private Bitmap getBitmapFromUri(Uri uri) {
            ParcelFileDescriptor parcelFileDescriptor = null;
            try {
                parcelFileDescriptor =
                        getActivity().getContentResolver().openFileDescriptor(uri, "r");
                FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
                Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
                parcelFileDescriptor.close();
                return image;
            } catch (Exception e) {
                Log.e(TAG, "Failed to load image.", e);
                return null;
            } finally {
                try {
                    if (parcelFileDescriptor != null) {
                        parcelFileDescriptor.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    Log.e(TAG, "Error closing ParcelFile Descriptor");
                }
            }
        }
时间: 2024-07-29 00:23:01

Android从图库选择照片的相关文章

Android 从 Android 本地图库选择多个图片

原文地址 本文说明如何从 Android 本地图库选择多个图片.作者考虑很多解决方案. 演示从 Android 本地图库选择多个图片,有两个方法可以实现从图库中选择多个图片: 用 Intent 获取多个图片 自定义图库从本地获取和加载图片 下载 Demo 下载 Demo 后将 QDReader 图片目录复制到 sd 卡上 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.2(API 19) SAMSUNG GT-8618,Androi

Android 从图库选择图片,拍照图片,裁剪图片

我直接写代码了 1先来几个常亮 private static final int PHOTO_REQUEST_CAREMA = 1;// 拍照private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择private static final int PHOTO_REQUEST_CUT = 3;// 结果private static final String PHOTO_FILE_NAME = "temp_photo.jpg"

Android开发模板代码(一)——简单打开图库选择照片

首先,先贴上样本代码 //检查权限 public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission

调用系统拍照和在系统图库选择照片设置头像

先上代码: package com.create.intenttest; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.Med

Android自定义ViewGroup (选择照片或者拍照)

教你搞定Android自定义ViewGroup http://www.jianshu.com/p/138b98095778 字数1794 阅读7030 评论8 喜欢37 上一篇我们介绍了Android中自定义View的知识,并实现了一个类似Google彩虹进度条的自定义View,今天我们将进一步学习如何去自定义一个ViewGroup. ViewGroup 我们知道ViewGroup就是View的容器类,我们经常用的LinearLayout,RelativeLayout等都是ViewGroup的子

Android拍照或从图库选择图片并裁剪

今天看<第一行代码>上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo. 一. 拍照选择图片 1.使用隐式Intent启动相机 //构建隐式Intent Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机 startActivityForResult(intent, 1); 2.处理相机拍照返回的结果 //用户点击了取消 if(data == n

Android 4.4从图库选择图片,获取图片路径并裁剪

转自:http://blog.csdn.net/tempersitu/article/details/20557383 最近在做一个从图库选择图片或拍照,然后裁剪的功能.本来是没问题的,一直在用 [java] view plaincopy Intent intent=new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 的方式来做,是调用系统图库来做,但是发现如

Android实例-从照相机或图库获取照片(XE8+小米2)

结果: 1.如果要取本地相删除的话,小米手机要注意一下,不能取网络相册. 操作: 1.两个 TButton (Button1 和 Button2) , 一个 TActionList(ActionList1) ,一个 TImage(Image1). 2.Button1 的 stylelookup 选 择 cameratoolbutton , Button1 的 stylelookup 选择organizetoolbutton. 3.双击 ActionList1,在弹出的对话框中点击右键菜单中的ne

Android 从图库到选择图片onActivityResult接收注意的问题

从图库选择图片然后返回数据接收处理的时候,这个时候我们可能会遇到一个问题.就是明明我走了返回的代码.但是为什么我的图片路径没有拿到?这个时候可能是Android的api不同导致,因为Android4.4以上和4.3以下的onActivityResult返回的uri是不一样的,打开的图库的意图到跟api没什么影响.这个时候我们就需要对相对应的api的返回数据进行对应的处理,才不会报错.好了!问题已经描述完了.这里只是描述问题.具体解决方案不记录