Android ACTION_IMAGE_CAPTURE a volte non call onActivityResult

Nel nostro codice utilizziamo il metodo getPhoto che ha il seguente aspetto:

public void getPhoto(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); captureFile = new File(getCaptureFilePath()); captureUri = Uri.fromFile(captureFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri); startActivityForResult(intent, CAPTURE_IMAGE); } 

E onActivityResult:

  • SimpleDateFormat aggiunge alcuni minuti
  • Opzioni per la comunicazione client server in Android
  • Disegni di Android DrawSelectorOnTop con GridView
  • Come posso impostare il colore della barra di valutazione di android? (Non il colore delle stelle ma il BORDER)
  • Android - Autostart e limitare l'accesso ad altre applicazioni
  • Creare la scheda ActionBar anche chiamando le sue funzioni selectTab
  •  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "Came"); if (resultCode == RESULT_OK) { if (requestCode == CAPTURE_IMAGE) { try { captureFile = new File(getCaptureFilePath()); captureUri = Uri.fromFile(captureFile); Bitmap scaledBitmap = decodeFileAndResize(captureFile); saveResizedAndCompressedBitmap(scaledBitmap); Bitmap rotatedBitmap = convertToRotatedBitmap(scaledBitmap); driverPhoto.setImageBitmap(rotatedBitmap); Log.w(TAG, "Before recycle"); if (rotatedBitmap != scaledBitmap) { scaledBitmap.recycle(); scaledBitmap = null; System.gc(); } Log.w(TAG, "After recycle"); } catch (IOException e) { BugSenseHandler.log(TAG, e); } } } } 

    A volte, quando premendo 'Ok', non viene chiamato onActivityResult (non Came stato scritto). Che cosa è sbagliato nel mio codice?

    EDIT: 12-04 12:43:36.040: INFO/WindowManager(145): WIN DEATH: Window{40839990 com.skalar/com.skalar.activities.RegisterActivity paused=false} appare nel codice quando non viene chiamato onActivityResult .

    3 Solutions collect form web for “Android ACTION_IMAGE_CAPTURE a volte non call onActivityResult”

    È ansible che la tua attività sia uccisa e questa è la ragione per cui non si ottiene l'esecuzione di onActivityResult? Quando ritorna l'intento della telecamera, normalmente verrà eseguito onActivityResult seguito da onResume. Inserisci un'istruzione di log nei methods onPause e onResume e controlla la sequenza di esecuzione.

      I faced same problem , once check have you put any tag related to History ? 

    Non mettere android: noHistory = tag "true" in manifesto se si utilizza android: noHistory = "true" nella tua attività all'interno del manifesto, rimuoverà dalla pila dopo la stop.

    Nota: se si utilizza l'attività di tabulazione allora anche non si dovrebbe usare android: noHistory = "true" oppure semplicemente mettere android: noHistory = "false" nell'attività all'interno del manifesto.

    potrebbe essere la mia spiegazione è sbagliato ma ho avuto la soluzione.

    secondo: https://groups.google.com/forum/#!topic/android-developers/aihsOU8uAzU

     The method that takes care of the capture only returns correctly (using the finnish() method, I think) if the picture can be saved correctly in the file specified by that URI. If there's an exception (such as an IO exception) it will be captured and nothing will be done, so you'll never know. I believe that 'myTestFile' is a file that can only be read/written within your own application and that's why image_capture can't write to it. 

    Quindi il problema è

     captureFile = new File(getCaptureFilePath()); intent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri); 

    è ansible risolvere il problema impostando captureFile il valore restituito di questo metodo:

      private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File directory = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "your subdirectory for Picture directory"); if(!directory.exists() && !directory.mkdir()) return null; File image = File.createTempFile( imageFileName, /* prefix */ ".jpg", /* suffix */ directory /* directory */ ); // Save a file: path for use with ACTION_VIEW intents return image; } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.