android---从相册中选择图片
来源:互联网 发布:算法工程师转产品经理 编辑:程序博客网 时间:2024/05/16 06:52
private ImageView picture;public static final int CHOOSE_PHOTO=2;
picture=(ImageView)findViewById(R.id.imageView);run_Permissions();
//从相册选择照片
private void run_Permissions(){ Button Album=(Button)findViewById(R.id.album); Album.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //动态申请对SD卡读写的权限 if(ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},1); }else { openAlbum(); } } });}private void openAlbum(){ Intent intent=new Intent("android.intent.action.GET_CONTENT"); intent.setType("image/*"); startActivityForResult(intent,CHOOSE_PHOTO); //打开相册}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if(grantResults.length>0 &&grantResults[0] == PackageManager.PERMISSION_GRANTED){ openAlbum(); }else { Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show(); } break; default: }}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case CHOOSE_PHOTO: handleImageOnKitKat(data); }}private void handleImageOnKitKat(Intent data){ //处理图片 String imagePath = null; Uri uri=data.getData(); if (DocumentsContract.isDocumentUri(this, uri)) { //如果是document类型的Uri,则通过document id处理 String docId = DocumentsContract.getDocumentId(uri); if ("com.android.providers.media.documents".equals(uri.getAuthority())) { String id = docId.split(":")[1]; //解析出数字格式的id String selection = MediaStore.Images.Media._ID + "=" + id; imagePath = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection); } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())) { Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId)); imagePath = getImagePath(contentUri, null); } } else if ("content".equalsIgnoreCase(uri.getScheme())) { //如果是cntent类型的Uri,则使用普通方式处理 imagePath = getImagePath(uri, null); } else if ("file".equalsIgnoreCase(uri.getScheme())) { //如果是file类型的Uri,直接获取图片路径即可 imagePath = uri.getPath(); } displayImage(imagePath);}private String getImagePath(Uri uri,String selection){ //通过Uri和selection来获取真实的图片路径 String path=null; Cursor cursor=getContentResolver().query(uri,null,selection,null,null); if(cursor != null){ if(cursor.moveToFirst()){ path=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); } cursor.close(); } return path;}private void displayImage(String imagePath){ //显示图片 if(imagePath != null){ Bitmap bitmap= BitmapFactory.decodeFile(imagePath); picture.setImageBitmap(bitmap); }else { Toast.makeText(this, "failed to get image", Toast.LENGTH_SHORT).show(); }}
布局就一个按钮Button,一个ImageView。 代码注释很清楚。
参考自第一行代码
0 0
- android---从相册中选择图片
- Android 从相册选择图片
- 从相册中选择图片
- android从系统相册中选择一张图片
- Android-从相册中选择图片显示出来
- Android从相册中选择图片显示出来
- Android 从相册和拍照选择图片
- Android从相册选择图片并裁剪
- Android 拍照、从相册选择图片
- 从相册中选择多张图片
- 从相册选择图片
- Android 实现从相册选择图片,拍照选择图片
- Android 从相册中选择照片
- android: 从相册中选择照片
- android 从相册中选择图片并判断图片是否旋转
- 拍照上传图片与从相册中选择图片上传
- Android 多媒体应用:从相册选择照片显示(解决相册中图片显示不出来的问题)
- android从相册中获取图片
- BZOJ 2306: [Ctsc2011]幸福路径
- 第三章 PX4-Pixhawk-SPI底层驱动解析
- c++第四次作业报告
- leetcode题解-169. Majority Element && 189. Rotate Array
- GitHub环境配置
- android---从相册中选择图片
- java的动态代理机制详解
- 生成 .chm 格式帮助文档
- Action_H5
- MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)
- sysbench安装for oracle
- 引用和指针的区别和联系
- VS2013
- nginx安装包安装nginx