解决android有些机型截图返回 resultCode = 0的问题

本文介绍了一种解决Android部分机型截图后返回resultCode=0的问题的方法。通过改变截图保存路径,确保截图成功并避免图片错误。

解决android有些机型截图返回 resultCode = 0的问题

说明:造成该问题的原因在与图片,截图完成之后,图片保存的路径与原路径一样,输出的byte值为0,所有反应的图片出错。

修改:

intent.setDataAndType(imageUri, “image/*”); //imageUri图片的原路径
intent.putExtra(“output”, saveUri); //saveUri 输出图片保存路径

只需修改输出路径就不会导致截图失败

/** * 
     * @param activity
     * @param imageUri
     *            图片的原始路径
     * @param saveUri
     *            截图保存的路径
     * @param RESULT_CAMERA_CROP_URI
     *            返回码
     */
    @SuppressWarnings("deprecation")
    public static void takeCameraCropUri(Activity activity, Uri imageUri, Uri saveUri, int RESULT_CAMERA_CROP_URI) {

        WindowManager windowManager = activity.getWindowManager();
        int wh = windowManager.getDefaultDisplay().getWidth();
        if (wh == 0) {
            wh = 480;
        }

        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(imageUri, "image/*");
        intent.putExtra("crop", "true"); // crop=true 有这句才能出来最后的裁剪页面.
        intent.putExtra("aspectX", 4); // 这两项为裁剪框的比例
        intent.putExtra("aspectY", 3); //
        intent.putExtra("outputX", wh / 4); // 图片输出大小
        intent.putExtra("outputY", wh);
        intent.putExtra("return-data", false);
        intent.putExtra("output", saveUri); // 输出地址
        intent.putExtra("outputFormat", "PNG"); // 返回格式
        // intent.putExtra("scale", false);// 裁剪时是否保留图片的比例,这里的比例是1:1
        intent.putExtra("noFaceDetection", true); // no face detection
        intent.putExtra("scaleUpIfNeeded", true);// 如果小于要求输出大小,就放大
        activity.startActivityForResult(intent, RESULT_CAMERA_CROP_URI);
    }
`res.resultCode === 200` 是一种常见的表达式,常出现在基于 JavaScript 的网络请求结果判断中。它表示检查变量 `res` 中的属性 `resultCode` 是否等于数值 `200`。这种形式一般用于确认某个操作是否成功完成。 --- ### **1. 背景知识** 在网络通信协议 HTTP 中,状态码 `200 OK` 表示服务器已成功处理客户端的请求,并返回了预期的结果。因此,许多 API 接口会约定在其响应数据中加入类似的状态标志字段(比如 `resultCode`),以便前端开发者更容易理解本次请求的成功与否以及原因。 - 当 `resultCode == 200` ,意味着此次交互顺利完成; - 若值不是 200,则可能代表失败或者其他特定情形的发生,例如4xx系列错误指示的是用户的不当行为(如页面不存在404)而5xx则关联到服务器端故障等问题存在。 --- ### **2. 应用场景举例** #### 案例一:AJAX 请求后的校验逻辑 ```javascript fetch('https://example.com/api/data') .then(response => response.json()) .then(res => { if (res.resultCode === 200) { // 判断业务级别的成功率 console.log("获取数据成功", res.data); } else { console.error(`请求失败,code=${res.resultCode}`); } }) .catch(error => console.error('发生异常:', error)); ``` 在这个例子里面,我们先发起 fetch 获取远程 JSON 数据源的内容;然后通过解析出来的 json 对象去查找 resultCode 属性来验证整个流程是不是按照计划正常运转下去。 #### 案例二:结合 Promise 和自定义封装函数 假设有一个简化版的服务调用工具类ServiceHelper.js: ```javascript class ServiceHelper { static async getData(url){ const result = await fetch(url).then(r=>r.json()); return new Promise((resolve,reject)=>{ if(result.resultCode===200){ resolve(result); }else{ reject(new Error(`Error Code:${result.resultCode}`)); } }); } } // 使用实例 try{ let data=await ServiceHelper.getData('/api/example'); }catch(err){ alert(err.message); } ``` 在这里我们将所有的异步读取都包装进了一个静态方法内,并且利用 then/catch 或者现代async-await语法统一管理反馈信息流。 --- ### **3. 总结** 尽管标准HTTP规范已经规定了一系列公认的状态编码体系,但在实际项目开发当中为了满足自身需求或是兼容旧系统的考虑,不少团队倾向于采用额外增加字段的方式来传达更为精细的信息层次。所以看到诸如上述提到过的 ‘res.resultCode === 200’ 式样的片段其实就是在做这样的事情——核对接收到的消息包里包含的关键标识符,进而确定下一步行动方向啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值