未经允许,禁止?转载,转载请注明出处:https://www.cnblogs.com/YyyyQ/p/9566106.html
这里解决了Android7.0以上版本的问题,和小米手机的问题。之前记录过一个这样的问题,今天回头看一眼简直有些乱,决定删除,重新整理一篇,
选择照片库时
Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, CHOOSE_PHOTO);
onActivityResult
/** * 值的回调 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode == RESULT_OK){ switch(requestCode){ // 打开图库获取图片并进行裁剪 case CHOOSE_PHOTO: try{ cropPhoto(data.getData()); }catch(NullPointerException e){ e.printStackTrace(); } break; //裁剪图片后设置图片 case REQUEST_CROP: if(data!=null) { try { Bitmap head = BitmapFactory.decodeStream(getContentResolver().openInputStream(uritempFile)); //根据路径给头像赋值 personImage.setImageBitmap(head); }catch(FileNotFoundException e) { e.printStackTrace(); } } break; } } }
图片裁剪
private void cropPhoto(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("scale", true); // 设置裁剪区域的宽高比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 设置裁剪区域的宽度和高度 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); // 取消人脸识别 intent.putExtra("noFaceDetection", true); //这句话导致小米手机闪退 //intent.putExtra("return-data", true); uritempFile = Uri.parse("file://" + "/"+Environment.getExternalStorageDirectory().getPath()+"/"+System.currentTimeMillis() + ".jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile); // 图片输出格式 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); startActivityForResult(intent, REQUEST_CROP);
}
这次就看着舒服多了,如果解决了你的问题,别忘了点个赞?