Od chwili uruchomienia Androida 4.4, po uruchomieniu i zamierzeniu typu Intent.ACTION_GET_CONTENT, zamiast wybierać między Gallery, Dropbox, itp., Otwiera się nowa przeglądarka dokumentów. Jest to dobre, jeśli chcesz tylko otworzyć obraz, ponieważ może on być nadal wykonywany w taki sam sposób, jak w starszych APIS. Problem pojawia się, gdy trzeba przyciąć wybrany obraz, ponieważ przeglądarka dokumentów ignoruje Uri I przekazuje do niego i parametr przycinania. To, co robię:Przytnij podczas wybierania z Galerii w systemie 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);
}
Wtedy uratował mi photoUri być pewien, że gdyby dostępny na zwrot:
@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"));
}
A potem w onActivityResult, ja po prostu potrzebne, aby otworzyć InputStream z photoUri ponieważ galleryIntent utworzył plik z przyciętym obrazem.
Teraz, gdy to zrobię, plik określony przez photoUri w zamierzeniu nigdy nie zostanie utworzony. Czy istnieje nowy sposób robienia tego?
To właśnie robię w KitKat, ale to nie pozwala na parametr parametru – Makerhack