android 裁切照片适应小米系统的实践补充

在项目中遇到裁切图片的问题,然后测试时候发现只有小米切完了反不回来,于是查了一下发现已经有人写帖子解决问题,就是下面这段代码,

你从相册和拍照有了图片uri之后传给这个函数,此函数调用系统的裁切,

public static Intent Crop(String action, Uri uri) {

Intent intent = new Intent(Intent.ACTION_GET_CONTENT)

.putExtra( MediaStore.EXTRA_OUTPUT, uri);
.setDataAndType(uri, "image/*")
  .putExtra("crop", params.crop).putExtra(“true”)
.putExtra("aspectX", aspectX)
.putExtra("aspectY", aspectY)
.putExtra("outputX", outputX)
.putExtra("outputY", outputY)
.putExtra("return-data", false)
.putExtra("outputFormat", 'jpge")
.putExtra("noFaceDetection",true)
  .putExtra(MediaStore.EXTRA_OUTPUT, uri);

startActivityForResult(intent,"REQ_CROP");

}

然后问题来了。

什么情况捏?

1是众所周知的小米系统在返回的onActivityResult里data为null,

2是你们大约不知道的调用系统Crop需要先创建文件,将已存在的文件的uri反给intent

3是我真的没想到的new file(uri.toString) 居然不存在,这个debug了一下才发现,创建file用的路径是  /storage/emulated/……  而uri中存的是file:///storage/emulated/

而高潮是,这两个创建的文件居然不一样。

好了,下面是解决问题的代码

/**
     * 裁切临时文件
     */
    public Uri getTempUri(String name){
        Uri uritempFile = null;
        File file = new File(Environment.getExternalStorageDirectory(),  
                name);
        try{
            file.createNewFile();
        }catch(IOException e){
            
        }
        if(file.exists()){
            fileTempPath = file.getPath();
            uritempFile=  Uri.fromFile(file);
            return uritempFile;
        }
        return uritempFile;
    }

他会返回一个uri作为裁切intent的传参,同时全局变量fileTempPath会保存文件存在的依据,在返回之后你可以通过

bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uritempFile));中bitmap的null情况来判断此次裁切是否成功。


另外补充两点:

调用系统地址:

内存:Environment.getExternalStorageDirectory()
SDcard:Environment.getExternalStorageState()





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值