Da Android 4.4, quando lanci e Intenti del tipo Intent.ACTION_GET_CONTENT, invece di scegliere tra Galleria, Dropbox e così via, apre il nuovo Browser documenti. Questo va bene se vuoi solo aprire un'immagine, poiché questa può ancora essere eseguita nello stesso modo rispetto all'APIS precedente. Il problema si presenta quando devi ritagliare l'immagine selezionata, poiché il browser dei documenti ignora l'Uri che sto passando ad esso e il parametro di ritaglio. Questo è quello che sto facendo:Ritaglia mentre selezioni dalla Galleria su Android 4.4
void take_photo() {
File file = null;
try {
file = PhotoUtils.createTemporaryFile("picture", ".jpg",
EditProfileActivity.this);
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
photoUri = Uri.fromFile(file);
Intent galleryIntent= new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
galleryIntent.putExtra("crop", "true");
galleryIntent.putExtra("aspectX", 2);
galleryIntent.putExtra("aspectY", 2);
galleryIntent.putExtra("outputX", 1300);
galleryIntent.putExtra("outputY", 1300);
galleryIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(galleryIntent, ACTIVITY_SELECT_IMAGE);
}
Poi ho salvato il mio photoUri per essere sicuro che ho avuto a disposizione sul ritorno:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (photoUri != null)
outState.putString("uri", photoUri.toString());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState.containsKey("uri"))
photoUri = Uri.parse(savedInstanceState.getString("uri"));
}
E poi nel onActivityResult, ho solo bisogno di aprire un InputStream con photoUri perché la galleriaIntent aveva creato il file con l'immagine ritagliata.
Ora, quando lo faccio, il file specificato da photoUri nell'intento non viene mai creato. C'è un nuovo modo per farlo?
Questo è quello che sto facendo in Kitkat, ma ciò non consente comunque il parametro di ritaglio – Makerhack