未找到处理 Intent act=com.android.camera.action.CROP 的 Activity

Posted

技术标签:

【中文标题】未找到处理 Intent act=com.android.camera.action.CROP 的 Activity【英文标题】:No Activity found to handle Intent act=com.android.camera.action.CROP 【发布时间】:2015-01-19 05:46:21 【问题描述】:

我正在尝试实现一个功能,以从 android 内置图库(不是从 SD 卡)中挑选照片或使用相机拍照。选择图像后,用户将对其进行裁剪。 ImageView 也将使用裁剪后的图像进行更新。现在从图库中选择图像后,我无法裁剪它 - 返回“未找到处理 Intent act=com.android.camera.action.CROP 的活动”错误。而且我似乎也无法使用所选图像更新 ImageView。有人可以告诉我出了什么问题吗?谢谢。

我的代码如下:

private void ShowPickDialog() 
    new AlertDialog.Builder(this)
            .setTitle("Add Photo")
            .setNegativeButton("Select from Photos", new DialogInterface.OnClickListener() 
                public void onClick(DialogInterface dialog, int which) 
                    dialog.dismiss();
                    Intent intent = new Intent();
                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent, "Select Picture"),3);
                
            )
            .setPositiveButton("Take a Pic", new DialogInterface.OnClickListener() 
                public void onClick(DialogInterface dialog, int whichButton) 
                    dialog.dismiss();
                    Intent intent = new Intent(
                            MediaStore.ACTION_IMAGE_CAPTURE);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
                            .fromFile(new File(Environment.DIRECTORY_PICTURES,
                                    "image.jpg")));
                    startActivityForResult(intent, 2);
                
            ).show();


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    switch (requestCode) 
        case 1:
            startPhotoZoom(data.getData());
            break;
        case 2:
            File temp = new File(Environment.getExternalStorageDirectory()
                    + "/test.jpg");
            startPhotoZoom(Uri.fromFile(temp));
            break;
        case 3:
            if(data != null)
                setPicToView(data);
            
            break;
        default:
            break;

    
    super.onActivityResult(requestCode, resultCode, data);



public void startPhotoZoom(Uri uri) 
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, "image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("outputX", 150);
    intent.putExtra("outputY", 150);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, 3);



private void setPicToView(Intent picdata) 
    Bundle extras = picdata.getExtras();
    if (extras != null) 
        Bitmap photo = extras.getParcelable("data");
        //update ImageView with selected image
        mPic.setImageBitmap(photo);
    

【问题讨论】:

com.android.camera.action.CROP 操作是内部 API 的一部分,因此并非在所有情况下都有效。只是想提一下 :) 更多详情 -commonsware.com/blog/2013/01/23/… 或者您可以尝试使用裁剪意图设置类名称,例如 .. Intent intent = new Intent("com.android.camera.action.CROP"); intent.setClassName("com.android.camera", "com.android.camera.CropImage"); 【参考方案1】:

Android没有有裁剪意图

您可以改用库

Android CropImage

【讨论】:

以上是关于未找到处理 Intent act=com.android.camera.action.CROP 的 Activity的主要内容,如果未能解决你的问题,请参考以下文章

未找到处理 Intent act=com.android.camera.action.CROP 的 Activity

未找到处理 Intent act=android.service.wallpaper.CHANGE_LIVE_WALLPAPER 的活动(有附加功能)

android.content.ActivityNotFoundException:未找到处理 Intent act=android.settings.USAGE_ACCESS_SETTINGS

未找到使用有效 url 处理 Intent 错误的活动

未找到处理 Intent 的活动 - android.intent.action.OPEN_DOCUMENT

尝试打开 word 文件或 excel 文件时未找到处理 Intent 的活动