Có một lệnh gọi API đơn giản nào sẽ cho tôi biết nếu một ứng dụng chạy trên Android 10 trở lên phải sử dụng quyền truy cập Scoped Storage, nghĩa là, nếu quyền truy cập tệp thông thường, còn gọi là "Lưu trữ bên ngoài kế thừa" bị tắt? Lưu ý rằng ngay cả khi ứng dụng trong AndroidManifest.xml, phần đã khai báo:
android:requestLegacyExternalStorage="true"
quyền truy cập tệp vẫn có thể bị từ chối do những thay đổi chính sách của Google trong tương lai, vì vậy việc kiểm tra giá trị này là vô ích. Cách duy nhất tôi tìm thấy là kiểm tra xem thư mục gốc của bộ lưu trữ bên ngoài có thể đọc được hay không, nhưng trước tiên, ứng dụng phải xin phép Lưu trữ, điều này vô dụng đối với mọi thứ khác, nếu lưu trữ kế thừa bị vô hiệu hóa.
public static boolean mustUseScopedStorage() {
// Impractical must first ask for useless Storage permission...
File exSD = Environment.getExternalStorageDirectory();
return !exSD.canRead(); // this test works only if Storage permission was granted.
}
Tôi nghĩ rằng tôi đã từng thấy một API mới để phát hiện điều này, nhưng không thể tìm thấy bài viết đó nữa ...
an app running on Android 10 or later must use Scoped Storage access
? Bạn có thể giải thích những gì bạn có ý nghĩa với điều đó? Những suy nghĩ nào bạn có trong tâm trí? Tôi biết rằng, ví dụ Khối lượng lưu trữ và Trình quản lý lưu trữ được mang cho N đã không được dùng cho Q.