美文网首页
Android 6.0动态权限和WRITE_EXTERNAL_S

Android 6.0动态权限和WRITE_EXTERNAL_S

作者: zlzxm | 来源:发表于2017-09-26 10:23 被阅读0次

动态权限申请

 sdk 中实现方法:

public final void requestPermissions(@NonNull String[] permissions,intrequestCode) {

if(mHasCurrentPermissionsRequest) {

Log.w(TAG,"Can reqeust only one set of permissions at a time");

// Dispatch the callback with empty arrays which means a cancellation.

onRequestPermissionsResult(requestCode,newString[0],new int[0]);

return;

}

Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions);

startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode,null);

mHasCurrentPermissionsRequest=true;

}


1.调用activity  requestPermissions  参数是 一个权限数组 和一个请求标示(new String(){android.Manifest.permission},int  requestCode) 例如:requestPermissions(newString[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},1);

2.在activity 中 复写 activity 的 onRequestPermissionsResult 方法  例如:

@Override

public voidonRequestPermissionsResult(intrequestCode,@NonNullString[] permissions,@NonNullint[] grantResults) {

switch(requestCode){

case1:

if(grantResults.length>0&&grantResults[0]== PackageManager.PERMISSION_GRANTED){

    //用户同意授权

 //todo

}else{

    //用户拒绝授权

}

break;

}

}


2.WRITE_EXTERNAL_STORAGE : 向sd卡设备写入数据权限

 1.内置存储中写入数据:

         getFileDir  getCacheDir  

不需要WRITE_EXTERNAL_STORAGE权限

2.内置sd卡中存储数据:

getExternalFilesDir    getExternalCacheDir

api<19 需要 权限       api>19 不需要权限

3.sd卡不是app 私有目录下:

getExternalStorageDirectory   需要权限 


3. 小米中测试 在清单文件中  申请了WRITE_EXTERNAL_STORAGE 权限

即可在程序中去写入文件,  观察app权限配置如下图。显示app已经具有读写手机存储的权限。 然而在模拟机上需要去动态申请权限,

4.华为手机中也是如此 同样 只在清单文件中配置 权限即可。

相关文章

网友评论

      本文标题:Android 6.0动态权限和WRITE_EXTERNAL_S

      本文链接:https://www.haomeiwen.com/subject/tttsextx.html