繁体   English   中英

为什么Android作物意图不返回ActivityResult?

[英]Why doesn't Android crop intent return ActivityResult?

我正在尝试从媒体库中裁剪图像。 我可以访问图像,启动默认裁剪工具甚至保存裁剪的图像结果。

但是,如果裁剪成功,我正在使用的意图将不会返回任何结果。

我的主要方法:

// Crop photo intent.
Intent intent = new Intent("com.android.camera.action.CROP", null);         
intent.setData(uri);   
intent.putExtra("outputX", outputX);
intent.putExtra("outputY", outputY);
intent.putExtra("aspectX", aspectX);
intent.putExtra("aspectY", aspectY);
intent.putExtra("scale", scale);
intent.putExtra("return-data", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, createTempCroppedImageFile());
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

// Publish intent to crop picture.
activity.startActivityForResult(intent, activity.CROP_PHOTO_REQUEST_CODE);  

- OnActivityResult()方法 -

// Photo crop activity.
if (requestCode == CROP_PHOTO_REQUEST_CODE) {
    if (resultCode == RESULT_OK) {
        Log.d(TAG, "user cropped a photo");
        signupScreen.setImage(new PhotoTool(this).getTempCroppedImageFileLocation());
    } else
        Log.d(TAG, "user cancelled photo crop");
}

如果我取消了裁剪活动,我会成功获得“用户取消的照片裁剪”消息。 但是,如果我裁剪图像,新裁剪的图像将出现在目标目录中,但OnActivityResult()函数永远不会被调用。 是什么赋予了?

看看LogCat,我发现每次保存裁剪的图像时,“JavaBinder”都会抱怨“Binding Transaction失败”。 我知道这与内存有某种关系,但裁剪文件的大小只有24KB。

找到了这个问题的问题。 不幸的是,这是一个Android限制。

看到Android cropper不能超过256?

我已将裁剪图像的输出设置为400x400。 不幸的是Android的默认裁剪器只能做256x256。 这非常令人沮丧,特别是当没有关于限制的文档时。

你在裁剪意图中调用setResult(int)link )吗?

更新 :\\

发送RESULT_CANCELLED是默认值。 它会一直被发回,除非你实现了一些东西。

在您的裁剪意图中,当您完成编辑(即用户点击完成按钮或类似的东西)时,该过程的一部分将调用setResult(RESULT_OK)

例:

public void doneBTNPressed( View view ) {
    if ( view.getId() == R.id.doneBTN ) {
        this.isCropped = true;
    }
}

@Override    
protected void onPause() {
        if ( this.isCropped ) {
            setResult(RESUL_OK);
        }
        super.onPause();
    }

该结果(RESULT_OK,加上您指定的另一个整数)将传递回调用Activity(假设使用了startActivityForResult())。 根据您的需要,还有一些覆盖。 在调用(父)活动中,您必须实现onActivityResultint,int,Intent)以从退出活动中获取结果。

在上面提供的链接中,有一个标题为“开始活动和获得结果”的部分,它解释了从现有活动中获取信息的多种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM