Android permission denied原因歸納和解決辦法
下面是我在學習android開發(fā)時遇到的permission denied的問題和解決辦法
1. net: ERR_CACHE_MISS
解決方法
在AndroidManifest.xml中加入 permission如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.xxx"> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
2. 讀取寫入external storage(手機中的文件)
解決方法
首先,同樣需要在AndroidManifest.xml中加入 permission
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.xxx"> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 下面這行代碼也非常重要,千萬不要忘記加--> <application ... android:requestLegacyExternalStorage="true">...</application> </manifest>
其次還需要使得這個app獲得 存儲權限可以在手機 ->設置 -> 對應app 中進行設置,允許app讀取手機內(nèi)存(最簡單的方法)。
更好的方法(正規(guī)的方法)是在打開app時,檢查app是否有權限讀取內(nèi)存。如果沒有的話,提示用戶開啟 可以寫一個snackbar指向 這個app的settings。代碼如下:
/** * 檢查app是否擁有存儲權限,如果沒有的話,提醒用戶開啟權限 */ public void handlePermission() { // 檢查是否開啟 Manifest.permission.xxx // (xxx 為權限,根據(jù)自己需求添加) if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "Permission has been allowed", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "ask for permission",Toast.LENGTH_SHORT).show(); // 請求權限 ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); Log.d(TAG, "handlePermission: has aksed"); } }
此函數(shù)可以根據(jù)自己需求放到 onCreate() method里面或者,listener() 里面。例如,如果放到onCreate() 里,打開此頁面時會提醒用戶開啟對應權限。
到此這篇關于Android permission denied原因歸納和解決辦法的文章就介紹到這了,更多相關Android permission denied內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android判斷手機是否是小米MIUI系統(tǒng)的方法
這篇文章主要介紹了Android判斷手機是否是小米MIUI系統(tǒng)的方法的相關資料,需要的朋友可以參考下2016-02-02Android?Camera開發(fā)實現(xiàn)可復用的相機組件
這篇文章主要為大家詳細介紹了Android?Camera開發(fā)實現(xiàn)可復用的相機組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05