Kể từ Android 4.4, khi bạn khởi chạy và Mục đích của loại Intent.ACTION_GET_CONTENT, thay vì chọn giữa Thư viện, Dropbox, v.v., nó sẽ mở Trình duyệt tài liệu mới. Điều này là tốt nếu bạn chỉ muốn mở một hình ảnh, vì điều này vẫn có thể được thực hiện theo cùng một cách so với APIS cũ hơn. Sự cố xảy ra khi bạn cần cắt hình ảnh đã chọn, vì trình duyệt tài liệu bỏ qua Uri Tôi đang chuyển đến nó và tham số cắt. Đây là những gì tôi đang làm:Cắt trong khi chọn từ Bộ sưu tập trong 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);
}
Sau đó, tôi lưu photoUri tôi chắc chắn tôi đã có nó có sẵn trên lợi nhuận:
@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"));
}
Và sau đó trong onActivityResult, tôi chỉ cần mở một InputStream với photoUri vì galleryIntent đã tạo tệp với hình ảnh được cắt.
Bây giờ khi tôi làm điều này, tệp được chỉ định bởi photoUri trong mục đích không bao giờ được tạo. Có cách nào mới để làm điều này?
Đó là những gì tôi đang làm trong Kitkat, nhưng điều đó không cho phép tham số cắt – Makerhack