Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android裁剪操作getData null与某些设备_Android_Android Crop - Fatal编程技术网

Android裁剪操作getData null与某些设备

Android裁剪操作getData null与某些设备,android,android-crop,Android,Android Crop,我在剪切带有“活动结果”的图像时遇到问题。我已设置设备>6的权限。但当显示裁剪和裁剪成功时,结果数据为空。(imageReturnedIntent.getData()us null,并且意图数据也为null)。这是代码裁剪图像 public static Intent cropIntent(Uri inUri, int outputX, int outputY, boolean isScale) { Intent c

我在剪切带有“活动结果”的图像时遇到问题。我已设置设备>6的权限。但当显示裁剪和裁剪成功时,结果数据为空。(
imageReturnedIntent.getData()
us null,并且意图数据也为null)。这是代码裁剪图像

public static Intent cropIntent(Uri inUri, int outputX, int outputY,
                                    boolean isScale) {
    Intent cropIntent = new Intent("com.android.camera.action.CROP");
    cropIntent.setDataAndType(inUri, "image/*");
    cropIntent.putExtra("crop", "true");
    cropIntent.putExtra("aspectX", outputX > 0 ? outputX : 100);
    cropIntent.putExtra("aspectY", outputY > 0 ? outputY : 100);
    cropIntent.putExtra("outputX", outputX > 0 ? outputX : 100);
    cropIntent.putExtra("outputY", outputY > 0 ? outputY : 100);
    cropIntent.putExtra("scale", isScale);
    File file = new File(Environment.getExternalStorageDirectory() + File.separator + "img.jpg");
    Uri mCropImagedUri = Uri.fromFile(file);
    cropIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mCropImagedUri);
    cropIntent.putExtra("return-data", true);
    return cropIntent;
}
这是代码活动结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    if (callbackManager != null) {
        callbackManager.onActivityResult(requestCode, resultCode, imageReturnedIntent);

    }

    switch (requestCode) {
        case SELECT_PHOTO:
            if (resultCode == RESULT_OK) {

                Uri uriImage = imageReturnedIntent.getData();
                System.out.println(">>>> uri "+uriImage);
                //   CommonUtils.cropImage(uriImage,HomeActivity.this,SELECT_CROP_IMAGE);
                startActivityForResult(CommonUtils.cropIntent(uriImage,
                        200, 200, true), SELECT_CROP_IMAGE);
            }
            break;
        case SELECT_CROP_IMAGE:
            if (resultCode == RESULT_OK) {
                //   Uri uri = imageReturnedIntent.getData();

                System.out.println(">>>>> "+imageReturnedIntent.getData());
                Bundle extras = imageReturnedIntent.getExtras();
                if (extras == null) {
                    System.out.println(">>>>> check intent");
                    return;
                }
                // Bitmap bitMapScale = extras.getParcelable("data");
                Uri uri = extras.getParcelable(MediaStore.EXTRA_OUTPUT);
                try {
                    Bitmap bitMapScale = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
                    System.out.println(">>>>>> check " + bitMapScale);
                    //       yourSelectedImage.recycle();
                    // base64
                    String myBase64Image = CommonUtils.encodeToBase64(bitMapScale, Bitmap.CompressFormat.PNG, 100);
                    //   bitMapScale.recycle();
                    assert uri != null;
                    LocalStorage.getShareInstance().saveUriAvatar(uri.toString());
                    LocalStorage.getShareInstance().saveBase64Image(myBase64Image);
                    UserModel userModel = LocalStorage.getShareInstance().getUserLogin();
                    if (userModel == null) {
                        // if user have not login.
                        if (uiLeftMenu != null) {
                            uiLeftMenu.fillImage(uri);
                        }
                    } else {
                        System.out.println(">>>>>> check data");
                        if (CommonUtils.isStringDataValid(myBase64Image)) {

                            upLoadImageToServerWithStringBase64(myBase64Image);
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
            break;
    }
}

问题是什么?

我在Huwai设备上也遇到了同样的问题。某些设备未通过
intent.getData()
发送目标Uri。但经过一些调试后,我发现uri设置在
mAction
String变量上,可以通过
intent.getAction()
方法访问它。然后可以使用“Uri.parse(outPutFilePath)”这个方法生成Uri。您可以首先检查
intent.getData()
是否为空。如果为null,则使用
intent.getAction()
方法将Uri获取为字符串并生成输出Uri。
我这样解决了我的问题。希望这会有所帮助。

有时默认作物不起作用。您可以使用此库
com.android.camera.action.CROP
不受官方支持,可以不工作。因此,没有解决办法。事件不是所有设备都支持它。