Tôi muốn chụp ảnh từ máy ảnh và lưu nó vào thư mục bộ nhớ cache của ứng dụng riêng tư. Tôi nhận ra rằng tôi phải cấp cho ứng dụng máy ảnh quyền ghi vào thư mục riêng của mình, vì vậy tôi đã thêm cờ FLAG_GRANT_WRITE_URI_PERMISSION
.Lưu hình ảnh từ máy ảnh vào thư mục bộ nhớ cache ứng dụng riêng tư
Điều đang xảy ra là ứng dụng máy ảnh mở ra, tôi có thể chụp ảnh, nhưng khi tôi nhấp vào nút OK, không có gì xảy ra. Ứng dụng máy ảnh vẫn mở. Không có đầu ra nhật ký. Tôi đoán đó là do sự cố về quyền.
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();
}
}
Mọi thông tin chi tiết, về cách tôi có thể khắc phục điều đó?
Edit:
Khi tôi thay đổi thư mục vào thẻ SD nào, sau đó nó hoạt động tốt.
mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory());
Cảm ơn Simon
Nếu đó là vấn đề về quyền, lỗi sẽ hiển thị trong LogCat. – PearsonArtPhoto
Không chắc chắn về điều đó. Ngay cả khi tôi xóa cờ FLAG_GRANT_WRITE_URI_PERMISSION, tôi không nhận được bất kỳ kết xuất nhật ký nào. Có thể ứng dụng máy ảnh kiểm tra quyền và chỉ hủy bỏ tác vụ nếu nó không thể ghi tệp. – SimonSays