"open failed: EACCES (Permission denied)"權限已加,寫入sd卡仍報錯的解決辦法

不知道大家有沒有碰到過這種情況,在運行虛擬機時,或者使用高版本的安卓手機時,即使是在清單文件中加了權限,向sd卡寫入數據時還是會報錯:open failed: EACCES (Permission denied)。在網上找了好久才找到解決辦法,記錄下來以免更多人在這個問題上浪費時間。
其實這個問題是由於Android6.0更新了權限機制,在6.0之前,寫入sd卡權限只需在清單文件中添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>即可,而在6.0中,則需要在activity中用代碼來請求一些敏感的權限,其中就包括對sd卡的操作權限。對這個問題有以下幾種解決辦法:

  1. 打開虛擬機的Setting–>Apps–>找到你的應用–>點擊Permissions–>將需要的權限手動打開
  2. 將targetSdkVersion設置爲小於23,然後重新編譯
  3. 手動在activity添加請求權限的代碼,具體代碼可參考如下鏈接:
    Android 6.0 運行時權限處理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章