我有四个设备,其中一个是Samsung Galaxy 6,我最近注意到,当我尝试结束裁剪 Activity 并发送回数据时,永远不会调用onActivityResult。取而代之的是,它奇怪地跳过了onActivityResult应该打开的类,并返回到该处的上一个 Activity 。没有崩溃,没有空值传递给此代码

Bundle extras = new Bundle();
extras.putParcelable(RETURN_DATA_AS_BITMAP, croppedImage);

extras.putIntArray(RETURN_CROP_INFO, cropInfo);
setResult(RESULT_OK,(new Intent()).setAction(ACTION_INLINE_DATA).putExtras(extras));

finish();

永远不会调用onActivityResult
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == RESULT_OK) {
            if (requestCode == Constants.INSTANCE.PICK_FROM_FILE ) {
                if (data != null) {
                    try {

有人知道这可能是什么吗?三星和另一部手机都在运行 Lollipop 。

这是自定义裁剪器的激活。尽管自定义裁剪器代码相当大,所以我不确定在此处发布是否有意义。
private void performCrop(Uri picUri)
{
    // create explicit intent
    Intent intent = new Intent(this, CropImage.class);

    String filePath = picUri.toString();
    intent.putExtra(CropImage.IMAGE_PATH, filePath);
    intent.putExtra(CropImage.SCALE, true);
    intent.putExtra(CropImage.ASPECT_X, 3);
    intent.putExtra(CropImage.ASPECT_Y, 4);
    intent.putExtra("return-data", true);
    intent.putExtra(CropImage.SCALE_UP_IF_NEEDED,true);

    // start activity CropImage with certain request code and listen
    // for result
    startActivityForResult(intent, picCrop);
}

最佳答案

刚巧不小心弄清楚了这个问题。我一直在这个问题上惹恼了我。

首先,我尝试删除bundle,然后将图像作为byte array传递到intent中。完成此操作后仍然无法正常工作。

然后我注意到,如果我从intent中删除了图像,则该代码设法在所有电话上都达到了onActivityResult。因此,我采取了一种变通方法,而不是按意向传递图像,而是将图像保存到了我在onActivityResult中访问的另一个类中。

我相信我从中得到的是,Galaxy 6手机是我拥有的唯一一部手机,该手机创建的位图大于可以通过byte[]或其他方式通过 Intent 传递的位图。

希望以后能对某人有所帮助!

关于android - 在一台Android设备上未调用OnActivityResult,但在另一台Android设备上调用了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32238081/

10-12 03:28