當前位置:
首頁 >
Android--存储权限
發(fā)布時間:2023/12/14
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Android--存储权限
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Android11 更新了新的存儲權(quán)限分區(qū)存儲,將不再允許用戶授權(quán)訪問 Downloads 的根目錄、每個可用 SD 卡的根目錄以及其它應(yīng)用的目錄。應(yīng)用仍然可以通過 Storage Access Framework API 或者文件選擇器來幫助用戶從共享存儲中選取個別文件。
Android SDK大于等于30(Android11)在?AndroidManifest.xml中申請,并且代碼中也需要動態(tài)申請:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- Android11新增 --> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <applicationandroid:name=".application.MainApplication"android:allowBackup="true"android:icon="@mipmap/biao"android:label="@string/app_name"android:persistent="true"android:requestLegacyExternalStorage="true"android:sharedUserId="android.uid.system"android:supportsRtl="true"android:theme="@style/AppTheme"android:preserveLegacyExternalStorage="true"android:usesCleartextTraffic="true"> </application> <!-- android10.0根目錄創(chuàng)建文件夾android:requestLegacyExternalStorage="true" --> <!-- android11 根目錄創(chuàng)建文件夾android:preserveLegacyExternalStorage="true"在Android11的機器上覆蓋安裝時,才能訪問舊版存儲位置,卸載重裝會失效--> public final class PermissionActivity extends AppCompatActivity {private static final int REQUEST_CODE = 1024;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestPermission();}private void requestPermission() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {// 先判斷有沒有權(quán)限if (Environment.isExternalStorageManager()) {doSomething();} else {Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);intent.setData(Uri.parse("package:" + context.getPackageName()));startActivityForResult(intent, REQUEST_CODE);}} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {// 先判斷有沒有權(quán)限if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {doSomething();} else {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);}} else {doSomething();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == REQUEST_CODE) {if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {doSomething();} else {ToastUtils.show("存儲權(quán)限獲取失敗");}}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {if (Environment.isExternalStorageManager()) {writeFile();} else {ToastUtils.show("存儲權(quán)限獲取失敗");}}}/*** 模擬文件寫入*/private void doSomething() {ToastUtils.show("doSomething");} }總結(jié)
以上是生活随笔為你收集整理的Android--存储权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MP3文件格式全解
- 下一篇: Android中的权限请求