Android调用系统相册的方法
2017-06-20 16:18
288 查看
/** * 打开系统相册 */ private void openAlbum() { Intent intent = new Intent("android.intent.action.GET_CONTENT"); intent.setType("image/*"); startActivityForResult(intent, 1004); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RESULT_OK) { switch (requestCode) { case 1004: if (Build.VERSION.SDK_INT >= 19) {//当API大于18之后Android对图片的路径进行了封装 handleImageOfKitKat(data); } else { handleImageBeforeKitKat(data); } break; default: break; } } super.onActivityResult(requestCode, resultCode, data); } /** * API 大于等于19的时候需要对返回的数据进行解析 * * @param data */ private void handleImageOfKitKat(Intent data) { String imageUrl = null; Uri uri = data.getData(); if (DocumentsContract.isDocumentUri(this, uri)) { String docId = DocumentsContract.getDocumentId(uri); if ("com.android.providers.media.documnets".equals(uri.getAuthority())) {//判断uri是不是media格式 String id = docId.split(":")[1];//是media格式的话将uri进行二次解析取出id String selection = MediaStore.Images.Media._ID + "=" + id; imageUrl = 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)); imageUrl = getImagePath(contentUri, null); } } else if ("content".equalsIgnoreCase(uri.getScheme())) { imageUrl = getImagePath(uri, null); } else if ("file".equalsIgnoreCase(uri.getScheme())) { imageUrl = uri.getPath(); } displayImage(imageUrl); } private String getImagePath(Uri externalContentUri, String selection) { String path = null; Cursor cursor = getContentResolver().query(externalContentUri, null, selection, null, null, null); if (cursor == null) { return path; } while (cursor.moveToNext()) { path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); } cursor.close(); return path; } /** * API小于19的时候返回的就是图片的Url * * @param data */ private void handleImageBeforeKitKat(Intent data) { Uri imageUrl = data.getData(); String imagePath = imageUrl.getPath(); displayImage(imagePath); }
相关文章推荐
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- android 调用系统相机或者系统相册功能时,onActivityResult方法不执行问题的解决过程
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android系统中Bitmap是否有调用recycle方法的必要性? .
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- [置顶] android 实现发送彩信方法 (MMS),非调用系统彩信界面
- android-实现仿系统search框的autoCompleteTextView----如何调用系统的隐藏方法
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- Android系统中Bitmap是否有调用recycle方法的必要性?
- Android系统中Bitmap是否有调用recycle方法的必要性?
- Android调用系统邮件类应用的正确实现方法
- android 实现发送彩信方法 (MMS),非调用系统界面