2017-07-24 1 views
-1

hier ist meine Kamera Absicht.Capture Bild von der Kamera und Crop funktioniert nicht

  File file = getExternalFilesDir(Environment.DIRECTORY_DCIM); 
      file.mkdirs(); 
      File output = new File(file, "profile_image"); 
      if (output.exists()) { 
       output.delete(); 
      } 
      Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

      captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, output); 
      startActivityForResult(captureIntent, PublicValues.IMAGE_FROM_CAMERA); 

in onActivityResult

if (requestCode == PublicValues.IMAGE_FROM_CAMERA) { 

       if (mPhotoUri != null) { 
        performCrop(mPhotoUri); 
       } else { 
        pictureUri = data.getData(); 
        performCrop(pictureUri); 
       } 

und Pflanzen Absicht

  Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
      cropIntent.setDataAndType(picUri, "image/*"); 
      cropIntent.putExtra("crop", "true"); // set crop properties 
      cropIntent.putExtra("aspectX", 1); // indicate aspect of desired crop(ratio) 
      cropIntent.putExtra("aspectY", 1); 
      cropIntent.putExtra("return-data", true); // retrieve data on return 
      cropIntent.putExtra("outputX", profileImage.getWidth()); // indicate output X and Y 
      cropIntent.putExtra("outputY", profileImage.getHeight()); 

      startActivityForResult(cropIntent, PublicValues.IMAGE_CROP); 

es funktioniert gut mit API 19 Gerät aber Abstürze in Eibisch Gerät.

Crash-Bericht ist wie folgt: -

Caused by android.os.FileUriExposedException: file:///storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20170721-WA0014.jpg exposed beyond app through Intent.getData() 
android.os.StrictMode.onFileUriExposed (StrictMode.java:1813) 
android.net.Uri.checkFileUriExposed (Uri.java:2360) 
android.content.Intent.prepareToLeaveProcess (Intent.java:8981) 
android.content.Intent.prepareToLeaveProcess (Intent.java:8942) 
android.app.Instrumentation.execStartActivity (Instrumentation.java:1583) 
android.app.Activity.startActivityForResult (Activity.java:4228) 
android.support.v4.app.BaseFragmentActivityJB.startActivityForResult (BaseFragmentActivityJB.java:50) 
android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:79) 
+2

Können Sie das Fehlerprotokoll schreiben? –

+0

@AjilO. siehe meine Bearbeitung – ben10

+0

alle Berechtigungen sind Ihrer App gegeben, richtig ?? –

Antwort

2

Verwendung Gradle:

compile 'com.theartofdev.edmodo:android-image-cropper:2.3.+' 

und versuchen Sie dies:

private void performCrop(Uri imageUri) { 
    CropImage.activity(imageUri) 
      .setGuidelines(CropImageView.Guidelines.ON) 
      .setCropShape(CropImageView.CropShape.RECTANGLE) 
      .setAspectRatio(1, 1) 
      .setMultiTouchEnabled(true) 
      .start(this); 
} 
+0

es funktioniert.wie kann ich das beschnittene Bild bekommen? – ben10

+1

Implementieren Sie diese Gradle-Datei in Ihrem Projekt und schreiben Sie diese Methode in Ihre Klasse, danach rufen Sie diese performCrop() -Methode mit dem Parameter von imageUri auf, den Sie beschneiden möchten. –