Android 调用系统相册,针对6.0以上 崩溃 解决办法
来源:互联网 发布:b超图片上的数据 编辑:程序博客网 时间:2024/05/19 20:43
Android6.0 是一个分界线
6.0之后调用 系统相册 data会返回 null
首先,打开系统照相机
Intent intent = new Intent(Intent.ACTION_PICK);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");// 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERYstartActivityForResult(intent, PHOTO_REQUEST_GALLERY);
其次
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PHOTO_REQUEST_GALLERY) { // 从相册返回的数据 if (data != null) { // 得到图片的全路径 Uri uri = data.getData(); //裁剪 crop(uri); } } else if (requestCode == PHOTO_REQUEST_CAREMA) { // 从相机返回的数据 if (hasSdcard()) { crop(Uri.fromFile(tempFile)); } else { Toast.makeText(MyInfoActivity.this, "未找到存储卡,无法存储照片!", Toast.LENGTH_SHORT).show(); } } else if (requestCode == PHOTO_REQUEST_CUT) { // 从剪切图片返回的数据 if (data != null) { Uri mImageCaptureUri = data.getData(); Bitmap photoBmp = null; if (mImageCaptureUri != null) { try { photoBmp = MediaStore.Images.Media.getBitmap(getContentResolver(), mImageCaptureUri); //保存 SharedPreferences share = getSharedPreferences("PHOTO_REQUEST_CUT", MODE_PRIVATE);//实例化 SharedPreferences.Editor editor = share.edit(); //使处于可编辑状态 editor.putString("fileName", data.getData().toString()); editor.commit(); //提交数据保存 changeBitmap(photoBmp, PHOTO_REQUEST_CUT, photoBmp + ".jpg"); iv_head_image.setImageBitmap(photoBmp); } catch (IOException e) { e.printStackTrace(); } } } try { // 将临时文件删除 tempFile.delete(); } catch (Exception e) { e.printStackTrace(); } } super.onActivityResult(requestCode, resultCode, data);}
我这里 针对 图像做裁剪 处理 了 ,也放上 代码
/* * 剪切图片 */ private void crop(Uri uri) { // 裁剪图片意图 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image"); intent.putExtra("crop", "true"); // 裁剪框的比例,1:1 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 裁剪后输出图片的尺寸大小 intent.putExtra("outputX", 250); intent.putExtra("outputY", 250); intent.putExtra("outputFormat", "JPEG");// 图片格式 intent.putExtra("noFaceDetection", true);// 取消人脸识别 intent.putExtra("return-data", false); intent.putExtra(MediaStore.EXTRA_OUTPUT, 0);// 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT startActivityForResult(intent, PHOTO_REQUEST_CUT); }
这个时候 data 就不为 空了……
阅读全文
0 0
- Android 调用系统相册,针对6.0以上 崩溃 解决办法
- Android拍照及图片裁剪、调用系统相册(兼容6.0以上权限处理及7.0以上文件管理)
- 调用系统相册 Android
- android调用系统相册
- Android 7.0以上调用相机崩溃
- android 4.4以上调用系统拍照与相册附带图片裁剪
- Android 调用系统 相册代码
- Unity3D调用Android系统相册
- android怎样调用系统相册
- APP调用系统相册,使用3DTouch重压,崩溃
- Unity调用android7.0以上系统相机崩溃问题
- Android 拍照以及一些常用的处理,例如将图片显示到相册(包含了安卓系统6.0以上调用相机的处理)
- android 5.0 以上版本 c++调用java 崩溃问题
- android 7.0以上共享文件(解决调用系统照相和图片剪切出现的FileUriExposedException崩溃问题)
- android 支付宝集成问题 4.1以上系统不能调用 failure calling remote service 解决办法
- Android——调用系统相册
- 调用Android系统相册并裁剪图片
- Android 调用系统相册(带裁剪)
- C# Hashtable初始化,foreach、Add、ht[key]=value、Remove()、Contain()、clear()
- 动态生成XML
- js 计算时间差
- com.android.ide.common.process.ProcessException:
- ASP.NET 4.0尚未在 Web 服务器上注册 解决方法
- Android 调用系统相册,针对6.0以上 崩溃 解决办法
- JAVA基础总结--断言
- React-intl前端国际化
- javascript获取浏览器高度和宽度
- UNIX网络编程——getsockname和getpeername函数
- 信息化系统工程IPTV或OTT-TV节目系统解决方案
- 集合
- bashrc profile
- C#错误异常日志记录到文件