在android 6.0以上無法獲取READ_PHONE_STATE權限的SecurityException的問題

我遇到的問題是,我在明明在AndroidManifest.xml中添加了READ_PHONE_STATE權限,可是在我的手機上一直報錯,錯誤信息如下:

getDeviceId: Neither user 10254 nor
current process has android.permission.READ_PHONE_STATE.

java.lang.SecurityException: getDeviceId: 
has android.permission.READ_PHONE_STATE.

後來發現,其他非android6.0的系統都是正常的,還有一個問題,是我爲了兼容android的樣式,吧targetSdkVersion 19改成了targetSdkVersion 23,所以android6.0在同事的targetSdkVersion 19上運行是沒問題的。


這個問題產生有幾個條件:

  1. 你的測試機是android6.0以上版本;
  2. 你的編譯環境的 targetSdkVersion 23;
  3. 你在代碼中沒有做權限的請求處理;

產生問題的原因:

android 6.0以上增加了動態獲取權限api,想要動態獲取手機的權限。類似iOS那樣,在使用時,彈出對話框,提示用戶,請求用戶允許。如果你沒做處理,就會報錯。

現在給你兩個鏈接,應該可以幫助我們解決這個問題:

問題的描述:

https://stackoverflow.com/questions/32635704/cant-get-the-permission

解決的方法:

https://developer.android.com/intl/zh-cn/training/permissions/requesting.html

Demo詳解地址:
http://www.jianshu.com/p/dbe4d37731e6
Demo下載地址:
https://github.com/SpikeKing/wcl-permission-demo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章