本文目录导读:
图片来源于网络,如有侵权联系删除
随着智能手机和平板电脑的普及,文件外部存储已成为我们生活中不可或缺的一部分,无论是照片、视频还是文档,我们都需要在设备上进行读写操作,在享受便利的同时,我们也需要关注文件外部存储的读写权限问题,如何打开文件外部存储的读写权限呢?本文将为您详细解析。
什么是文件外部存储读写权限?
文件外部存储读写权限是指设备操作系统对存储设备中的文件进行读写操作的控制,在Android系统中,文件外部存储读写权限主要分为以下两种:
1、读写权限:允许应用程序对存储设备中的文件进行读取和写入操作。
2、只读权限:允许应用程序对存储设备中的文件进行读取操作,但不能进行写入操作。
如何打开文件外部存储的读写权限?
1、在Android 6.0(API级别23)及以上版本中,系统要求应用程序在运行时请求文件外部存储的读写权限,以下是打开读写权限的步骤:
图片来源于网络,如有侵权联系删除
(1)在AndroidManifest.xml文件中添加以下权限声明:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
(2)在代码中请求权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 0); } } else { // API 23以下版本,无需请求权限 }
(3)在onRequestPermissionsResult方法中处理权限请求结果:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == 0) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限授予成功,执行读写操作 } else { // 权限授予失败,提示用户 } } }
2、在Android 10(API级别29)及以上版本中,系统要求应用程序使用分区存储(Scoped Storage)机制,以下是打开读写权限的步骤:
(1)在AndroidManifest.xml文件中添加以下权限声明:
图片来源于网络,如有侵权联系删除
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
(2)在代码中请求权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (!Environment.isExternalStorageManager()) { Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse(String.format("package:%s", getApplicationContext().getPackageName()))); startActivityForResult(intent, 0); } } else { // API 29以下版本,无需请求权限 }
(3)在onActivityResult方法中处理权限请求结果:
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0) { if (Environment.isExternalStorageManager()) { // 权限授予成功,执行读写操作 } else { // 权限授予失败,提示用户 } } }
标签: #文件外部存储读写权限在哪里打开
评论列表