ho il seguente codice che l'utente richiesta di scegliere un'immagine da applicazioni di foto o catturare un'immagine da app della fotocamera:Android 5.1.1 fotocamera di default tornare intento vuoto onActivityResult dopo l'acquisizione dell'immagine
// Camera
final List<Intent> cameraIntents = new ArrayList<Intent>();
final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
final PackageManager packageManager = fragment.getActivity().getPackageManager();
final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
for(ResolveInfo res : listCam) {
final String packageName = res.activityInfo.packageName;
final Intent intent = new Intent(captureIntent);
intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
intent.setPackage(packageName);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
cameraIntents.add(intent);
}
// Filesystem.
final Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
// Chooser of filesystem options.
final Intent chooserIntent = Intent.createChooser(galleryIntent, "Select Source");
// Add the camera options.
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));
fragment.startActivityForResult(chooserIntent, UPLOAD_IMAGE_ACTIVITY_REQUEST_CODE);
E il mio codice di onActivityResult:
Questi codici funzionano bene nelle precedenti versioni di Android. Tuttavia, quando I ha aggiornato il mio Nexus 5 su Android 5.1.1 (insieme aggiornando l'app della fotocamera all'ultima versione), i codici non funzionano bene quando si richiede alla fotocamera predefinita di acquisire foto.
Secondo debugger, quando il codice raggiunge final String action = data.getAction();
dopo la cattura di un'immagine app videocamera predefinita, il risultato intenti data
è sempre un intento vuoto (non nullo però) che non contiene azione, comparse, dati, etc. Quindi final String action = data.getAction();
restituisce sempre null e non riesce i miei codici seguenti.
Immagino che qualcosa sia cambiato per l'app fotocamera predefinita in 5.1.1, quindi il comportamento dell'intento della telecamera è diverso. Ma poi non ho idea di come farlo funzionare.
Qualsiasi suggerimento sarebbe gradito. Grazie!
Hai risolto il tuo problema ho anche lo stesso problema – Tony
@Tony scusa non l'ho fatto, la mia soluzione alla fine è salvare la foto solo nella memoria esterna, creare una variabile globale statica dell'URI dopo che è stata memorizzata, e controlla se questa variabile statica non è Null quando viene chiamato onActivityResult ... (E ogni volta che chiama la videocamera, imposta prima questa variabile Globale su null) – passer