介绍
如何在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卡的读写权限