JPermission與極光推送同時使用引起的問題(華為6.0)

  1. 問題來源
    在他人項目中增加極光推送。添加成功后,在魅族5.1手機(jī)上運(yùn)行無誤。然后給到測試,點進(jìn)app即閃退!!!

  2. 問題重現(xiàn)
    華為6.0手機(jī)

  3. 問題尋找
    期初并不知道華為6.0手機(jī)會隱藏日志,看了一圈log并沒有有效信息(重點關(guān)注了Error日志 ,并沒有注意Warn日志)。于是debug,到LoginActivity便crash。

    crash位置.png

    問題定位到這里,可是依舊不知道是什么問題。重新仔細(xì)查看log,發(fā)現(xiàn)了如下圖的錯誤信息:
    虛假錯誤日志.png

java.lang.NullPointerException: Attempt to invoke virtual method 'int com.huawei.lcagent.client.LogCollectManager.getUserType()'

于是百度了下這個問題,說是華為6.0中LogCollectManager這個類會隱真實的日志信息。

  1. 問題解決
    (1) 打開華為的日志信息
    在撥號界面輸入 *#*#2846579#*#* 。進(jìn)入工程菜單---后臺設(shè)置----LOG設(shè)置---LOG開關(guān) 把幾個復(fù)選框都勾選,這樣就可以顯示出log。
    20190123151351.png

    (2) 執(zhí)行上一步,再次查看log發(fā)現(xiàn)如下信息:
    Unknown permission: android.permission.RECEIVE_USER_PRESENT
    真實錯誤日志.png

    (3) 查看項目中并沒有配置此權(quán)限,想到新添加的極光推送,我采用的是jcenter 自動集成,此權(quán)限應(yīng)該就是極光中的。根據(jù)日志提示,不識別此權(quán)限。因此問題回到開始debug處的代碼。
    (4) JPermissionUtil 是一個開源項目中的類,用來處理6.0權(quán)限的。修改代碼,成功解決問題。
  //直接添加項目中的所有權(quán)限
  JPermissionUtil.requestAllPermission(this);

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 改為如下代碼 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

  List<String> excluePermission = new ArrayList<>();
  // 添加剔除掉的權(quán)限
  excluePermission.add("android.permission.RECEIVE_USER_PRESENT");
  JPermissionUtil.requestAllPermission(this, excluePermission);

參考鏈接:https://blog.csdn.net/qq_36317441/article/details/75112547

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容