如何在android中检测SD卡的读写权限

  介绍

如何在android中检测SD卡的读写权限?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强> 1.安卓版本在6.0以上版本时,以下代码才有用:

if  (Build.VERSION.SDK_INT 祝辞=,23),{   ,,UiUtils.getInstance () .showToast (“1“);   ,,//减少是否拥有权限checkCallPhonePermission  !=PackageManager.PERMISSION_GRANTED   ,,int  checkCallPhonePermission =, ContextCompat.checkSelfPermission (getApplicationContext(),许可);   ,,if  (checkCallPhonePermission  !=, PackageManager.PERMISSION_GRANTED), {   ,,,UiUtils.getInstance () .showToast (“2“);   ,,,//弹出对话框接收权限   ,,,ActivityCompat.requestPermissions (TakeCameraActivity.this, new  String[]}{许可,,id);   ,,,返回;   ,,},{else    ,,,UiUtils.getInstance () .showToast (“3“);   ,,,如果(allowableRunnable !=null) {   ,,,,allowableRunnable.run ();   ,,,}   ,,}   以前,,}

因为在android版5.0本以上才把SD卡的读写权限分离开,以前的老版本是没有进行分离的。故找不到SD卡的读写权限,而在测试的过程中,华为的手机出现SD卡读写权限分离在两个地方,有的时候可能不好找,本人就出现这个问题。

<强>二、代码介绍

调用第一个方法:

使用之前先定义两个变量:

, private  Map<整数,,Runnable>, allowablePermissionRunnables =, new  HashMap<在();   ,private  Map<整数,Runnable>, disallowablePermissionRunnables =, new  HashMap<在();

1。“android.permission.WRITE_EXTERNAL_STORAGE”这个是SD卡的写入权限,这里检测一个权限就可以了,不用检测读的权限了。

(1)以下第一个可运行的()中是权限提示框允许之后处理的业务。

(2)第二个Runnable()中是权限提示框拒绝之后执行的业务逻辑。

requestPermission (HDCivilizationConstants.SD_CARD_REQUEST_CODE,“android.permission.WRITE_EXTERNAL_STORAGE",, new  Runnable (), {   @Override。才能   ,,public  void 运行(),{   ,,//第一个可运行   ,,,if  (type==1) {   ,,,,FileUtils.saveBitmapPng (rectBitmap, pathList,, 80);   还有,,,}{   ,,,,try  {   ,,,,,FileUtils.saveBitmapJPG (rectBitmap, pathList,, 70);   ,,,,},catch  (ContentException  e), {   ,,,,,e.printStackTrace ();   ,,,,}   ,,,}   ,,}   ,,},new  Runnable (), {   @Override。才能   ,,public  void 运行(),{   ,,//第二个可运行//,,,,UiUtils.getInstance () .showToast(“请查看SD卡的读写权限“);   ,,,OKPopup.getInstance () .showPopup (TakeCameraActivity.this, new  OKPopup.BtnClickListener (), {   ,,,@Override   ,,,,public  void  btnOk (), {   ,,,,,OKPopup.getInstance () .dismissDialog ();   ,,,,}   ,,,},,假的,,HDCivilizationConstants.SDCARD_PERMISSION);   ,,}   });才能

<强> 2。调用上面的那个方法之后会跳转至这个方法(代码如下):

,/* *   *,才能请求权限   *,才能@param  id 请求授权的id 唯一标识即可   *,才能@param  permission 请求的权限   *,才能@param  allowableRunnable 同意授权后的操作   *,才能@param  disallowableRunnable 禁止权限后的操作   ,*/,protected  void  requestPermission (int  id, String 许可,,Runnable  allowableRunnable,, Runnable  disallowableRunnable), {   如果才能(allowableRunnable !=null) {   ,,allowablePermissionRunnables.put (id, allowableRunnable);   ,,}      if 才能;(disallowableRunnable  !=, null), {   ,,disallowablePermissionRunnables.put (id, disallowableRunnable);   ,,}//api才能版本判断   if 才能;(Build.VERSION.SDK_INT 祝辞=,23),{   ,,UiUtils.getInstance () .showToast (“1“);   ,,//减少是否拥有权限checkCallPhonePermission  !=PackageManager.PERMISSION_GRANTED   ,,int  checkCallPhonePermission =, ContextCompat.checkSelfPermission (getApplicationContext(),许可);   ,,if  (checkCallPhonePermission  !=, PackageManager.PERMISSION_GRANTED), {   ,,,UiUtils.getInstance () .showToast (“2“);   ,,,//弹出对话框接收权限   ,,,ActivityCompat.requestPermissions (TakeCameraActivity.this, new  String[]}{许可,,id);   ,,,返回;   ,,},{else    null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在android中检测SD卡的读写权限