Apakah ada panggilan API sederhana yang akan memberi tahu saya jika aplikasi yang berjalan di Android 10 atau lebih baru harus menggunakan akses Scoped Storage, yaitu, jika akses file normal, alias "Legacy External Storage" dinonaktifkan? Perhatikan bahwa meskipun aplikasi di AndroidManifest.xml, bagian menyatakan:
android:requestLegacyExternalStorage="true"
akses file mungkin masih ditolak karena perubahan kebijakan Google di masa mendatang, jadi menguji nilai ini tidak berguna. Satu-satunya cara yang saya temukan adalah untuk menguji apakah direktori root penyimpanan eksternal dapat dibaca, tetapi untuk itu, aplikasi harus terlebih dahulu meminta izin Penyimpanan, yang tidak berguna untuk hal lain, jika penyimpanan lama dinonaktifkan.
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.
}
Saya pikir saya pernah melihat API baru untuk mendeteksi ini, tetapi tidak dapat menemukan artikel itu lagi ...
sumber
an app running on Android 10 or later must use Scoped Storage access
? Bisakah Anda menjelaskan apa yang Anda maksud dengan itu? Fuction apa yang Anda pikirkan? Saya tahu bahwa misalnya Volume Penyimpanan dan Manajer Penyimpanan yang dibawa untuk N sudah tidak digunakan lagi untuk Q.Jawaban:
Anda dapat menggunakan dua metode ini dari
android.os.Environment
:isExternalStorageLegacy(File path)
isExternalStorageLegacy()
Jika Anda menemukan bahwa Anda memiliki akses ke penyimpanan lawas, secara pribadi saya pikir lebih baik memigrasi data ke penyimpanan scoped dan menggunakannya karena penyimpanan lawas mungkin berhenti bekerja tanpa peringatan.
sumber