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

  • Post author:
  • Post category:其他



在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;
		}
	}
...........
}

申请权限时,弹出如下窗口

在这里插入图片描述

`



版权声明:本文为u012633319原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。