2012-10-24 37 views
0

我有代码即可裁剪图片这样错误,没有任何活动来处理意图裁剪图像的Android

crop.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) {  

       mImageCaptureUri = Uri.parse(path); 

       doCrop(); 

如果按钮作物的点击,它就会运行这段代码即可裁剪图片

protected void doCrop(){ 

      final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>(); 

      Intent intent = new Intent("com.android.camera.action.CROP"); 
      intent.setType("image/*"); 

      List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0); 

      int size = list.size(); 

      if (size == 0) { 
       Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show(); 

       return; 
      } else { 
       intent.setData(mImageCaptureUri); 
       intent.setType("image/*"); 
       intent.putExtra("outputX", 200); 
       intent.putExtra("outputY", 200); 
       intent.putExtra("aspectX", 1); 
       intent.putExtra("aspectY", 1); 
       intent.putExtra("scale", true); 
       intent.putExtra("return-data", true); 
       //intent.putExtra("output", mImageCaptureUri); 

       if (size == 1) { 
        Intent i  = new Intent(intent); 
        ResolveInfo res = list.get(0); 
        i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); 
        startActivityForResult(i, HASIL_CROP); 
       } else { 
        for (ResolveInfo res : list) { 
         final CropOption co = new CropOption(); 

         co.title = getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo); 
         co.icon  = getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo); 
         co.appIntent= new Intent(intent); 
         co.appIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); 

         cropOptions.add(co); 
        } 

        CropOptionAdapter adapter = new CropOptionAdapter(getApplicationContext(), cropOptions); 

        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Choose Crop App"); 
        builder.setAdapter(adapter, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 
          startActivityForResult(cropOptions.get(item).appIntent, CROP_FROM_CAMERA); 
         } 
        }); 

        builder.setOnCancelListener(new DialogInterface.OnCancelListener() { 
         @Override 
         public void onCancel(DialogInterface dialog) { 

          if (mImageCaptureUri != null) { 
           getContentResolver().delete(mImageCaptureUri, null, null); 
           mImageCaptureUri = null; 
          } 
         } 
        }); 

        AlertDialog alert = builder.create(); 

        alert.show(); 
       }  
      } 

我从这个代码

String oldFile = path; 
      String imageTemp = "E"+System.currentTimeMillis(); 
      path = tempPath + imageTemp + ".jpg"; //alamat temporari image 
      FileOutputStream ostream = new FileOutputStream(path); 

      b.compress(CompressFormat.JPEG, 50, ostream); 
      ostream.close(); 

      mImageCaptureUri = Uri.parse(path); 

得到mImageCaptureUri但是当我点击按钮作物它什么也没有发生,下面logcat中 10-24 16:47:21.669:INFO/ActivityManager(59):开始活动:Intent {act = com.android.camera.action.CROP typ = image/* cmp = com.android.gallery/com.android。 camera.CropImage(有演员)}

我想这是因为

intent.setData(mImageCaptureUri); 
        intent.setType("image/*"); 

但如果我抹去intent.setType( “图像/ *”),它显示错误

10-24 16:51:24.549: ERROR/UriImage(345): got exception decoding bitmap 
10-24 16:51:24.549: ERROR/UriImage(345): java.lang.NullPointerException 
10-24 16:51:24.549: ERROR/UriImage(345):  at com.android.camera.gallery.UriImage.getPFD(UriImage.java:67) 
10-24 16:51:24.549: ERROR/UriImage(345):  at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:93) 
10-24 16:51:24.549: ERROR/UriImage(345):  at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:86) 
10-24 16:51:24.549: ERROR/UriImage(345):  at com.android.camera.gallery.UriImage.thumbBitmap(UriImage.java:120) 
10-24 16:51:24.549: ERROR/UriImage(345):  at com.android.camera.CropImage.onCreate(CropImage.java:143) 
10-24 16:51:24.549: ERROR/UriImage(345):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 

人可以帮忙吗?

谢谢

回答

0

@ya Lya检查mImageCaptureUri是否为空。如果不为null,则只需执行进一步的任务。我认为 mImageCaptureUri为空。