Android开发中apk开启sdcard的读写权限

        在android开发中内存一般分为硬件设备自带的存储空间以及扩展存储空间(sdcard),本文只对使用Android Studio开发程序时开启sdcard的读写权限进行说明
主要步骤分为两步
         AndroidManifest.xml中添加权限说明
         java代码文件中添加权限申请代码

第一步 AndroidManifest.xml中添加权限说明

需要添加的代码为如下三行
(application字段)
    android:requestLegacyExternalStorage=“true”
(manifest字段)
    <uses-permission android:name=“android.permission.READ_EXTERNAL_STORAGE”/>
    <uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE”/>
    <uses-permission android:name=“android.permission.MANAGE_EXTERNAL_STORAGE”>(在使用高版本Android SDK时添加)

AndroidManifest.xml的示例代码如下,注意添加位置,为 manifest中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.application">

	<application
		android:allowBackup="true"
		...........
		android:requestLegacyExternalStorage="true"
		...........
		android:theme="@style/AppTheme">
		<activity android:name=".MainActivity">
			<intent-filter>
				.........
			</intent-filter>
		</activity>
	</application>
	
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>	
	<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

</manifest>	
第二步 java代码文件中添加权限申请代码

需要添加代码如下
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
(在使用高版本Android SDK时添加如下代码)
if(!Environment.isExternalStorageManager()){
        Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
        startActivity(intent);
        return;
}

示例代码如下,只需要在sdcard读取文件之前添加代码获得相应权限即可。
当apk在第一次申请此权限并获得权限之后,如果apk不会卸载,后续都不需要重复申请此权限,即使在使用android studio开发过程中修改代码,也不需要重复申请,但是一旦apk卸载之后重新安装,则需要重新申请权限。
import android.Manifest;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Environment;
import android.provider.Settings;
import android.content.Intent;

public class MainActivity extends AppCompatActivity{
............
	public void some_function(){
		ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
		// 高版本Android SDK时使用如下代码
		if(!Environment.isExternalStorageManager()){
			Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
			startActivity(intent);
			return;
		}
	}
...........
}

申请权限时,弹出如下窗口
在这里插入图片描述

`

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值