自從離開上海來到杭州之后,陸續接觸了Android,Python,C++,OpenCV,最為一個新人來說,一路上遇到了很多坑,幸運的是 這互聯網的強大(大傻子我還是蠻喜歡的哈),一路填填補補總算走了下來。
一直就有把自己這幾個月來遇到的問題記錄下來的想法,苦於沒有時間(其實就是自己太懶),業精於勤荒於嘻,就以這個剛剛解決的問題作為開始吧。
接下來是正文啦~~~
大家都知道,Android 6.0中,某些權限屬於Protected Permission,例如:讀寫手機存儲權限,僅僅在AndroidManifest.xml中申明是無法真正獲取到權限的,打開手機的權限管理頁面,我們可以看見,讀寫手機存儲權限欄是一個問號,這意味着App並未獲取到該權限。
這是訪問手機存儲時,會報出類似下面的錯誤:
java.io.FileNotFoundException:*** (Permission denied)
有一個簡單粗暴的方法,就是在App安裝完成之后,手動在手機上將該權限改為允許。但是這種方法太low了,給用戶帶來的體驗也很差。我們希望通過代碼動態的獲取此權限,用戶只需要在第一次安裝時,在彈出的窗口點擊一下允許,就可以啦。
實現代碼:
if (Build.VERSION.SDK_INT >= 23) {
int REQUEST_CODE_CONTACT = 101;
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
//驗證是否許可權限
for (String str : permissions) {
if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
//申請權限
this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
}
}
}
PS:其它的權限小伙伴們就可以以此類推啦。