介绍
Android对外部存储需要静态权限和动态权限。涉及五个类:Environment ,ActivityCompat,Manifest.permission ,PackManger,FileOutStream
Environment:环境类,检查外部存储环境和获取存储路径
AcitivityCompat:活动兼容类,检查和获取动态权限
Manifest.permission:权限类型
PackManger:包管理器
FileOutputStream:文件输出流
属性:
( Environment )
MEDIA_MOUNTED:挂载参数
(PackManger)
PERMSSION_GRANTED:权限确定参数
(Manifest.permission)
WRITE_EXTERNAL_STORAGE:写入权限
READ_EXTERNAL_STORAGE:读取权限
方法
(Environment)
String getExternalStorageState()
参数:无
返回值:String
返回值意义:返回外部存储挂载状态
作用:获取外部存储挂载状态
String getExternalStorageDirectory()
参数:无
返回值:String
返回值意义:返回外部存储的文件路径
作用:获取外部存储的文件路径
(ActivityCompat)
String checkSelfPermission( Context context , String perssion )
参数:
Context context:上下文
String perssion:权限类型
返回值:String
返回值意义:是否拥有此权限
作用:检查是否拥有此权限
void requestPermissions(Activity activity, String [] permissions , int requestCode )
参数:
Activity activity:活动对象
String[] permissions:权限申请字符串数组
int requestCode:请求代码
返回值:无
返回值意义:无
作用:获取动态权限
使用
// Environment 挂载检查 ActivityCompat Manifest 权限检查 PackManger 对比 // 检查外部存储挂载状态 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ){ // 检查读取和写入动态权限 if(ActivityCompat.checkSelfPermission(ThirdActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){ }else { // 如果没有,获取读取和写入动态权限 ActivityCompat.requestPermissions(ThirdActivity.this,new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE},100 ); } }