2016-07-15 39 views
1

Wenn der Benutzer auf eine Schaltfläche klickt, öffnet die App die Galerie normal. Sobald der Benutzer jedoch ein Foto wählt, wird die App im Debug-Modus ohne Fehler oder Warnungen ausgeblendet (minimiert). Dasselbe passiert, wenn ich ein Foto mache. Der Breakpoint, den ich am Anfang von onActivityResult habe, wird niemals erreicht. Die Funktionen openGallery() und openCamera() werden aus dem Fragment XML aufgerufen. Was ist falsch?Android App verschwindet nach dem Auswählen eines Fotos aus der Galerie

public static final int GALLERY = 0; 
public static final int CAMERA = 1; 

public void openGallery(View view) { 
     Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(galleryIntent, GALLERY); 
    } 

    public void openCamera(View view) { 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, CAMERA); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == Activity.RESULT_OK) { 
      if (requestCode == GALLERY) 
       onSelectFromGalleryResult(data); 
      else if (requestCode == CAMERA) 
       onCaptureImageResult(data); 
     } 
    } 

private void onCaptureImageResult(Intent data) { 
    Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 
    File destination = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg"); 
    FileOutputStream fo; 
    try { 
     destination.createNewFile(); 
     fo = new FileOutputStream(destination); 
     fo.write(bytes.toByteArray()); 
     fo.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

    private void onSelectFromGalleryResult(Intent data) { 
     Bitmap bm=null; 
     if (data != null) { 
      try { 
       bm = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

Berechtigungen

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Fragment XML

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:onClick="openCamera" 
    android:clickable="true" 
    android:src="@drawable/camera" /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_marginLeft="10dp" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:onClick="openGallery" 
    android:clickable="true" 
    android:src="@drawable/gallery" /> 
+1

Bitte überprüfen Sie, ob Sie versuchen etwas intensives auf Ihrem onSelectFromGalleryResult() zu tun. Besonders wenn Sie versuchen, das aufgenommene Bild anzuzeigen, sollten Sie die Größe der Bitmap ändern. Überprüfen Sie diese [link] (https://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap) für weitere Informationen. –

+0

Kann nicht ohne Ihre onSelectFromGalleryResult() -Methode sagen. Bitte posten Sie es. –

+0

Funktioniert es richtig, wenn ein Bild mit der Kamera aufgenommen wird? –

Antwort

2

ich dieses Problem gelöst, indem: android:noHistory="true" zu "false" im AndroidManifest.xml.