作为一个普通应用来说
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
29以上为Android10。尽量按MediaStore操作sd卡。是无需申请权限就能访问的
作为一个文件管理应用或者杀毒软件来说
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
因为需遍历所有文件内容,sd卡权限写到29,我也不确认MediaStore可不可以获取到sd卡的所有内容(可以就评论下告诉下我吧)
因为10.0有沙盒的问题需配合使用
android:requestLegacyExternalStorage="true"
Android11以上可以通过isExternalStorageManager来处理
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (Environment.isExternalStorageManager()) {
} else {
}
}
Android13上,作为普通应用的话访问媒体相关,需格外申请权限,POST_NOTIFICATIONS 最后一个是通知权限
<!--android 13 适配-->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<!-- <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />-->
<!-- <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />