国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android檢測SD卡讀寫權限方法

2019-10-21 21:43:58
字體:
來源:轉載
供稿:網友

一、解析

做項目遇到了一個棘手的問題,SD卡的讀寫權限問題。

1.android版本在6.0以上版本時,以下代碼才有用:

if (Build.VERSION.SDK_INT >= 23) {   UiUtils.getInstance().showToast("1");   //減少是否擁有權限checkCallPhonePermission != PackageManager.PERMISSION_GRANTED   int checkCallPhonePermission = ContextCompat.checkSelfPermission(getApplicationContext(), permission);   if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {    UiUtils.getInstance().showToast("2");    //彈出對話框接收權限    ActivityCompat.requestPermissions(TakeCameraActivity.this, new String[]{permission}, id);    return;   } else {    UiUtils.getInstance().showToast("3");    if(allowableRunnable!=null){     allowableRunnable.run();    }   }  }

因為在android版本5.0以上才把SD卡的讀寫權限分離開,以前的老版本是沒有進行分離的。故找不到SD卡的讀寫權限,而在測試的過程中,華為的手機出現SD卡讀寫權限分離在兩個地方,有的時候可能不好找,本人就出現這個問題。

二、代碼介紹

調用第一個方法:

使用之前先定義兩個變量:

 private Map<Integer, Runnable> allowablePermissionRunnables = new HashMap<>(); private Map<Integer, Runnable> disallowablePermissionRunnables = new HashMap<>();

1.”android.permission.WRITE_EXTERNAL_STORAGE”這個是SD卡的寫入權限,這里檢測一個權限就可以了,不用檢測讀的權限了。

(1)以下第一個Runnable()中是權限提示框允許之后處理的業務。

(2)第二個Runnable()中是權限提示框拒絕之后執行的業務邏輯。

requestPermission(HDCivilizationConstants.SD_CARD_REQUEST_CODE, "android.permission.WRITE_EXTERNAL_STORAGE", new Runnable() {   @Override   public void run() {   //第一個Runnable    if (type==1){     FileUtils.saveBitmapPng(rectBitmap, pathList, 80);    }else{     try {      FileUtils.saveBitmapJPG(rectBitmap, pathList, 70);     } catch (ContentException e) {      e.printStackTrace();     }    }   }  }, new Runnable() {   @Override   public void run() {   //第二個Runnable//    UiUtils.getInstance().showToast("請查看SD卡的讀寫權限");    OKPopup.getInstance().showPopup(TakeCameraActivity.this, new OKPopup.BtnClickListener() {     @Override     public void btnOk() {      OKPopup.getInstance().dismissDialog();     }    }, false, HDCivilizationConstants.SDCARD_PERMISSION);   }  });

2.調用上面的那個方法之后會跳轉至這個方法(代碼如下):

 /**  * 請求權限  * @param id 請求授權的id 唯一標識即可  * @param permission 請求的權限  * @param allowableRunnable 同意授權后的操作  * @param disallowableRunnable 禁止權限后的操作  */ protected void requestPermission(int id, String permission, Runnable allowableRunnable, Runnable disallowableRunnable) {  if(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(), permission);   if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {    UiUtils.getInstance().showToast("2");    //彈出對話框接收權限    ActivityCompat.requestPermissions(TakeCameraActivity.this, new String[]{permission}, id);    return;   } else {    UiUtils.getInstance().showToast("3");    if(allowableRunnable!=null){     allowableRunnable.run();    }   }  } else {   boolean result = PermissionChecker.checkSelfPermission(this, permission)     == PermissionChecker.PERMISSION_GRANTED;   if(!result){    UiUtils.getInstance().showToast("4");    //如果未授權    ActivityCompat.requestPermissions(TakeCameraActivity.this, new String[]{permission}, id);   }else{    UiUtils.getInstance().showToast("5");    if(allowableRunnable!=null){     allowableRunnable.run();    }   }  } }

3.onRequestPermissionsResult方法是響應2中的方法之后執行。執行代碼之后,開始執行Runnable中的代碼程序。

 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  super.onRequestPermissionsResult(requestCode, permissions, grantResults);  if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {   Runnable allowRun = allowablePermissionRunnables.get(requestCode);   if(allowRun!=null){    allowRun.run();   }  } else {   Runnable disallowRun = disallowablePermissionRunnables.get(requestCode);   if(disallowRun!=null){    disallowRun.run();   }  } }

以上這篇android檢測SD卡讀寫權限方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安图县| 余庆县| 蓝田县| 海原县| 濉溪县| 庆云县| 林周县| 辽阳县| 元朗区| 望城县| 银川市| 衡南县| 陆良县| 榆中县| 西安市| 南城县| 漳浦县| 海城市| 万山特区| 梁河县| 湘阴县| 黔南| 定陶县| 塔城市| 河源市| 无为县| 子洲县| 梅河口市| 青阳县| 清丰县| 江北区| 城口县| 会泽县| 泸溪县| 汉寿县| 丰镇市| 桐梓县| 乌拉特中旗| 涟源市| 建水县| 霍邱县|