com.android.camera.action.CROP //根据API版本,结果会有所不同

时间:2019-03-26 02:05:14

标签: android crop

我要剪切自由尺寸的圆形图像。

所以我使用com.android.camera.action.CROP编写了代码。 我能够从api 23中获得想要的结果。 但不是在api 28(calaxy s10 +)中。

intent.putExtra("circleCrop", new String(""));

该代码不起作用。 我想知道为什么它不起作用以及改进的方向。 谢谢。

 public void cropImage() {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(photoUri, "image/*");
        List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);
        grantUriPermission(list.get(0).activityInfo.packageName, photoUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
        int size = list.size();
        if (size == 0) {
            Toast.makeText(this, "test1.", Toast.LENGTH_SHORT).show();
            return;
        } else {
            Toast.makeText(this, "test2.", Toast.LENGTH_SHORT).show();
            intent.putExtra("crop", "true");
            //intent.putExtra("aspectX", 1);
            //intent.putExtra("aspectY", 1);
            intent.putExtra("scale", true);
            intent.putExtra("circleCrop", new String(""));
            File croppedFileName = null;
            try {
                croppedFileName = createImageFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
            File folder = new File(Environment.getExternalStorageDirectory() + "/NOSTest/");
            File tempFile = new File(folder.toString(), croppedFileName.getName());
            photoUri = FileProvider.getUriForFile(MainActivity.this,
                    "dongster.cameranostest.provider", tempFile);
            intent.putExtra("return-data", false);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
            intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());

            Intent i = new Intent(intent);
            ResolveInfo res = list.get(0);
            grantUriPermission(res.activityInfo.packageName, photoUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
            startActivityForResult(i, CROP_FROM_CAMERA);

        }
    }

api 23

api 23

api 28

api 28

0 个答案:

没有答案