美文网首页
打开系统相册

打开系统相册

作者: 黑猫警长是小白猫 | 来源:发表于2017-07-18 13:38 被阅读0次

    首先在清单文件中添加权限,无论是拍照还是从相册中选择图片都涉及到用户的隐私,所以我们需要声明权限,需要在清单文件中加入这句:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    代码:

    
        private ImageView imgShow = null;
        private TextView imgPath = null;
        private final int IMAGE_CODE = 0;
        private final String IMAGE_TYPE = "image/*";
    
      private void selectImage() {
        // 判断api是否大于19(Android 4.4)
            boolean isKitKatO = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
            Intent intent;
            if (isKitKatO) {
                Log.e("Tag","ACTION_OPEN_DOCUMENT");
    
    //           此方法获取不到图片路径
    //            intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    
                // 6.0以上使用,获取图片路径
                intent=new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            } else {
                Log.e("Tag","ACTION_GET_CONTENT");
                intent = new Intent(Intent.ACTION_GET_CONTENT);
            }
            intent.setType(IMAGE_TYPE);
    
            startActivityForResult(intent, IMAGE_CODE);
        }
    
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            Log.e("Tag","走了 onActivityResult");
            if (resultCode == RESULT_OK) {
                Bitmap bm = null;
                ContentResolver resolver = getContentResolver();
                if (requestCode == IMAGE_CODE) {
                    try {
                        Uri uri = data.getData();
                        Log.e("Tag","Uri==="+uri);
    
                        //bm = MediaStore.Images.Media.getBitmap(resolver, uri);
                        //显得到bitmap图片
                        //imgShow.setImageBitmap(bm);
    
    //                  用Gilide加载uri
                        Glide.with(this).load(uri).into(imgShow);
    
                        String[] proj = {MediaStore.Images.Media.DATA};
                        Cursor cursor = getContentResolver().query(uri, proj, null, null, null);
                        if(cursor.moveToFirst()) {
                            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                            Log.e("Tag","column_index==="+column_index);
                            // 获取到图片路径
                            String path = cursor.getString(column_index);
                            Log.e("Tag","path==="+path);
                            imgPath.setText(path);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Log.e("Tag","Exception==="+e);
                    }
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:打开系统相册

          本文链接:https://www.haomeiwen.com/subject/krgckxtx.html