Vorrei acquisire un'immagine dalla fotocamera e salvarla nella directory della cache dell'app privata. Mi rendo conto che devo autorizzare la app della fotocamera a scrivere nella mia directory privata, quindi ho aggiunto il flag FLAG_GRANT_WRITE_URI_PERMISSION
.Memorizza l'immagine dalla videocamera nella directory della cache dell'app privata
Quello che succede è che l'app fotocamera si apre, posso scattare la foto, ma quando clicco sul pulsante OK, non succede nulla. L'app fotocamera resta aperta. Nessun output di registro. Immagino sia a causa di un problema di autorizzazione.
private void getCameraImage() {
try {
mTmpFile = File.createTempFile("tmp", ".jpg", getCacheDir());
Uri imgUri = Uri.fromFile(mTmpFile);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// i.setData(imgUri); // if uncommented, i get an ActivityNotFound Exception
startActivityForResult(i, REQUEST_CAMERA);
} catch (IOException e) {
Log.e(TAG, "getCameraImage()", e);
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
Qualche intuizione, su come ho potuto correggerlo?
Edit:
Quando cambio la directory sulla scheda SD pubblico, allora funziona benissimo.
mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory());
Grazie Simon
Se si tratta di un problema di autorizzazione, nel LogCat viene visualizzato un errore. – PearsonArtPhoto
Non ne sono sicuro. Anche quando rimuovo il flag FLAG_GRANT_WRITE_URI_PERMISSION, non ottengo alcun output di registro. Forse l'app della fotocamera controlla l'autorizzazione e interrompe l'azione solo se non riesce a scrivere il file. – SimonSays