第一行代码笔记——8.3.3 从相册中选择照片
来源:互联网 发布:淘宝二楼是什么 编辑:程序博客网 时间:2024/06/06 02:50
经过反复实验,确认了郭神的这段代码在我5.1的测试机上存在问题:选择完照片后没有进入裁剪,返回一片空白。
在https://segmentfault.com/q/1010000002513172这里找到了完美解决的方案。
但是答主没有给出充分的解释:
可以看到,为了获得
com.android.camera.action.CROP
必须进入TAKE_PHOTO。而答主给出了这样一段:
if (data != null) { imageUri = data.getData();}CROP_PHOTO时在这段前后imageUri发生了变化:
由file:///storage/sdcard0/output_image.jpg变为了content://media/external/images/media/****
因为用户重新选取了图片,这里需要更新imaUri。没错。
但是!这样一来TAKE_PHOTO就是错的了啊!!!
data:"Intent{act=inline-data(has extras)}
很明显这样写还是不能完美解决问题。所以加一句判断:
if (data != null && data.getData() != null) { imageUri = data.getData();}其实大家也觉得这样的改法实在很不好,但是因为我能力有限没敢重构这一段。也许可以用swich的穿透性提高重复代码的利用率。
最后一点——既然CROP_PHOTO时要刷新imageUri,但它在刷新前毫无作用。那么可以把源代码里的这一段注去:
public void onClick(View v) {// File outputImage = new File(Environment.getExternalStorageDirectory(), "output_image.jpg");// try {// if (outputImage.exists()) {// outputImage.delete();// }// outputImage.createNewFile();// } catch (IOException e) {// e.printStackTrace();// }// imageUri = Uri.fromFile(outputImage);// Intent intent = new Intent("android.intent.action.GET_CONTENT"); Intent intent = new Intent("android.intent.action.PICK"); intent.setType("image/*"); intent.putExtra("crop", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, TAKE_PHOTO);// startActivityForResult(intent, CROP_PHOTO); } });这样一来就好多了。
0 0
- 第一行代码笔记——8.3.3 从相册中选择照片
- 第一行安卓代码——从相册中选择照片8.3.2
- 从相册中选择照片
- 从相册中选择照片
- 第一行代码笔记 获取拍照照片和相册选取照片
- 《第一行代码》ChoosePicTest例子从相册读取照片显示失败
- 从相册中选择照片并返回~
- Android 从相册中选择照片
- android: 从相册中选择照片
- 多媒体之——从相册选择照片
- Android 调用摄像头拍照 以及 从相册中选择照片
- android从相册中选择报无法加载照片
- 调用摄像头拍照及从相册中选择照片
- Android 从相册中选择照片并返回
- android 从手机相册中选择一张照片
- 调用摄像头拍照和从相册中选择照片
- 【整理】Cordova 从相册中选择照片/拍照并上传
- Android开发如何从手机相册中选择照片
- css伪类选择器与伪元素选择器区别
- centos6.5安装LAMP全过程(不带图片)
- 课时07 第一节课程:认识网页的构成
- HDFS分布式文件系统系列---HDFS程序设计
- TCP与UDP协议的特点及区别小结
- 第一行代码笔记——8.3.3 从相册中选择照片
- Codeforces Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) 部分题解
- PHP如何实现“autoload”机制详解
- 394. Decode String(leetcode 栈模拟)
- codeforces 4A water
- TSP hdu 5418
- redis调优
- Keil开发STM32更换MCU造成的编译不通过解决办法
- GIT 使用学习笔记