1

Ich versuche ein (welches ich aus der Galerie ausgewählt oder von meiner Kamera genommen habe) zu beschneiden und es zu übergeben zu einem anderen activity, die die image zu meinem Firebase-Speicher hochladen sollte.Image-Crop-Activity sendet Image-Uri nicht zum Empfang von Activity (Android-Image-Cropper)

Zuerst (ohne Bildausschnitt) lief alles gut. Ich konnte die image übergeben und hochladen ... aber nachdem ich den Image-Crop-Code zu meinem onActivityResult hinzugefügt habe, schließt er einfach die imageCropActivity, nachdem ich 'crop' gedrückt habe und springt zurück zu meiner MainActivity.

Ich habe es versucht, aber ich kann wirklich nicht herausfinden, warum es das tut. Vielleicht verpasse ich etwas. Irgendwelche Ideen?

Für die Bildbeschneidungs ​​ich dieses libary bin mit: https://github.com/ArthurHub/Android-Image-Cropper

Hauptaktivität

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     mImageUri_gallery = data.getData(); 
     mImageUri_camera = data.getData(); 


     if (requestCode == 100 && resultCode == RESULT_OK) { 
      CropImage.activity(mImageUri_gallery) 
        .setGuidelines(CropImageView.Guidelines.ON) 
        .start(this); 
      if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
       CropImage.ActivityResult result = CropImage.getActivityResult(data); 
       if (resultCode == RESULT_OK) { 
        Uri resultUriGallery = result.getUri(); 
        Intent intentGallery = new Intent(MainActivity.this, ImagePostActivity.class); 
        intentGallery.putExtra("image-uri", resultUriGallery.toString()); 
        startActivity(intentGallery); 
       } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
        Exception error = result.getError(); 
       } 
      } 

     } else if (resultCode != RESULT_CANCELED && data != null) { 
      if (requestCode == 200 && resultCode == RESULT_OK) { 
       CropImage.activity(mImageUri_camera) 
         .setGuidelines(CropImageView.Guidelines.ON) 
         .start(this); 
       if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
        CropImage.ActivityResult result = CropImage.getActivityResult(data); 
        if (resultCode == RESULT_OK) { 
         Uri resultUriCamera = result.getUri(); 
         Intent intentCamera = new Intent(MainActivity.this, ImagePostActivity.class); 
         intentCamera.putExtra("image-uri", resultUriCamera.toString()); 
         startActivity(intentCamera); 
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
         Exception error = result.getError(); 
        } 
       } 

      } 
     } 


    } 

ImagePostActivity

public class ImagePostActivity extends AppCompatActivity { 

    public static TextView txt_btn_post; 
    public static EditText mPostTitle; 
    public static ImageView imagePostPreview; 
    private StorageReference mStorage; 
    private DatabaseReference mDatabase; 
    private ProgressDialog mProgress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image_post); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     mStorage = FirebaseStorage.getInstance().getReference(); 
     mDatabase = FirebaseDatabase.getInstance().getReference().child("Test_Stream_Uploads"); 
     mProgress = new ProgressDialog(this); 
//  mPostTitle = (EditText) findViewById(R.id.mPostTitle); 
     imagePostPreview = (ImageView) findViewById(R.id.imagePostPreview); 
     Intent intent = getIntent(); 

     mImageUri_gallery = Uri.parse(intent.getStringExtra("image-uri")); 
     imagePostPreview.setImageURI(mImageUri_gallery); 
     mImageUri_camera = Uri.parse(intent.getStringExtra("image-uri")); 
     imagePostPreview.setImageURI(mImageUri_camera); 

     txt_btn_post = (TextView) findViewById(R.id.txt_btn_post); 
     txt_btn_post.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startPosting(); 
      } 
     }); 


    } 

    private void startPosting() { 

     mProgress.setMessage("Bild wird hochgeladen..."); 
     mProgress.show(); 
     if (mImageUri_gallery != null) { 
      StorageReference filepath = mStorage.child("Stream_Image").child(mImageUri_gallery.getLastPathSegment()); 
      filepath.putFile(mImageUri_gallery).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
        Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
        Intent intent = new Intent(getBaseContext(), MainActivity.class); 
        DatabaseReference newPost = mDatabase.push(); 
        newPost.child("image").setValue(downloadUrl.toString()); 
        mProgress.dismiss(); 
        startActivity(intent); 
       } 
      }); 
     } 


    } 
} 

Antwort

0

ich dieses Werkzeug auch aktiv mit und Ich bin wirklich nicht in deinen Code gekommen, aber ich kann abschalten Ihnen ein Beispiel, wie es für mich funktioniert. Wenn man sich das anschaut, kann man leicht folgen und die Idee bekommen. Es funktioniert für die Bilder, die du aus der Galerie nimmst.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == GALLERY_REQUEST && resultCode == RESULT_OK){ 
     Uri imageUri = data.getData(); 
     CropImage.activity(imageUri) 
       .setGuidelines(CropImageView.Guidelines.ON) 
       .setAspectRatio(144,81) 
       .start(this); 
    } 
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
     CropImage.ActivityResult result = CropImage.getActivityResult(data); 
     if (resultCode == RESULT_OK) { 
      Uri resultUri = result.getUri(); 
      ib_image.setImageURI(resultUri); 
     } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
      Exception error = result.getError(); 
     } 
    } 
} 

Wenn Sie dies auf das Bild anwenden möchten Sie gerade von der Kamera nahm, müssen Sie Ihre eigene uri erstellen, ist es ein bisschen langer Weg, aber es ist in der Android-Dokumentation erklärt :(https://developer.android.com/training/camera/photobasics.html#TaskPhotoView), das habe ich in einer Diskussion hier erklärt: Image capture with camera & upload to Firebase (Uri in onActivityResult() is null)

+0

Danke! Ich werde es ausprobieren und Sie wissen lassen, ob es für mich funktioniert – Ron

+0

@Ron hat es funktioniert? –

Verwandte Themen