您好,登錄后才能下訂單哦!
這篇“Android無法在SD卡創建目錄怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Android無法在SD卡創建目錄怎么解決”文章吧。
摘要
今天開發中遇到一個問題,項目無法在Android6.0設備的SD卡創建目錄,在Android6.0以下的移動設備測試了5.0 、4.3的設備,均正常,但是在Android6.0卻不正常。
經過排查,執行下列代碼無法在6.0的設備上面創建目錄
File dir = new File(DbConfig.BASE_PATH); if (!dir.exists()) { dir.mkdirs(); }
衍生知識
2015年5月29日中Google I/O開發者大會,Google 發布了 Android M,并命名為“棉花糖”(Marshmallow),對于開發者來說, Android 6.0(API 23)給開發者帶來的一些變化。
權限管理是 Android M 最大的改變
變化描述:
權限管理更加精細,并且由以前的安裝時靜態授權,改為現在的運行時動態授權。
大家對 Android 的權限吐槽已久,Android 應該能極大的改善這方面的問題。
主要改變有:
系統設置中可以對 APP 各個權限單獨控制權限根據內容進行分組了
普通權限還是在安裝時授權,其他權限在運行時系統彈窗授權,并且要解析使用這個權限的目的
對于開發者來說,需要小心處理權限相關的問題。在使用某個功能的時候,需要總是判斷是否有改權限,并且通過合適的方式請求用戶授權。
現在描述一下處理的解決方案
1 發起讀寫設備存儲空間的權限
ActivityCompat.requestPermissions(AppStartActivity.this,new String[]{ android.Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
2 寫權限請求回掉函數
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { boolean writeAccepted = false; switch (requestCode) { case 1: writeAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED; break; } }
3 執行創建目錄代碼
if (writeAccepted) { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { File dir = new File(DbConfig.BASE_PATH); if (!dir.exists()) { dir.mkdirs(); } } }
以上就是關于“Android無法在SD卡創建目錄怎么解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。