問題來源:
在他人項目中增加極光推送。添加成功后钝计,在魅族5.1手機上運行無誤酿炸。然后給到測試项乒,點進app即閃退!!!問題重現(xiàn):
華為6.0手機-
問題尋找
期初并不知道華為6.0手機會隱藏日志,看了一圈log并沒有有效信息(重點關(guān)注了Error日志 梁沧,并沒有注意Warn日志)。于是debug蝇裤,到LoginActivity便crash廷支。
問題定位到這里,可是依舊不知道是什么問題栓辜。重新仔細查看log恋拍,發(fā)現(xiàn)了如下圖的錯誤信息:
java.lang.NullPointerException: Attempt to invoke virtual method 'int com.huawei.lcagent.client.LogCollectManager.getUserType()'
于是百度了下這個問題,說是華為6.0中LogCollectManager這個類會隱真實的日志信息
藕甩。
-
問題解決
(1) 打開華為的日志信息
在撥號界面輸入*#*#2846579#*#*
施敢。進入工程菜單---后臺設(shè)置----LOG設(shè)置---LOG開關(guān) 把幾個復(fù)選框都勾選,這樣就可以顯示出log狭莱。
(2) 執(zhí)行上一步僵娃,再次查看log發(fā)現(xiàn)如下信息:
Unknown permission: android.permission.RECEIVE_USER_PRESENT
(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