Seit Android 4.4, wenn Sie starten und Intent des Typs Intent.ACTION_GET_CONTENT, statt die Auswahl zwischen Galerie, Dropbox, etc, öffnet es den neuen Dokument-Browser. Dies ist in Ordnung, wenn Sie nur ein Bild öffnen möchten, da dies immer noch auf die gleiche Weise wie in älteren APIS durchgeführt werden kann. Das Problem tritt auf, wenn Sie das ausgewählte Bild zuschneiden müssen, da der Dokumentbrowser den URI ignoriert, den ich ihm übergebe und den Crop-Parameter. Das ist, was ich tue:Crop bei der Auswahl aus der Galerie in 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);
}
Dann habe ich meine photoUri gerettet sein, dass ich es bei der Rückkehr zur Verfügung hatte:
@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"));
}
Und dann in onActivityResult, ich brauchte nur einen Inputstream mit photoUri zu öffnen weil der galleryIntent die Datei mit dem kopierten Bild erstellt hat.
Jetzt, wenn ich dies tue, wird die von photoUri in der Absicht angegebene Datei nie erstellt. Gibt es einen neuen Weg dies zu tun?
Das ist, was ich in Kitkat mache, aber das erlaubt den Crop-Parameter sowieso nicht – Makerhack