[英]Getting Null Pointer Exception on method getIntent().getCategories()
以下代碼導致在方法'boolean java.util.Set.contains(java.lang.Object)'Null指針上獲取Null指針異常我猜測
getIntent().getCategories().contains(Intent.CATEGORY_LAUNCHER)
導致問題。
一些用戶報告說當他們從主屏幕打開應用程序時它崩潰了。 但是從 Playstore打開按鈕打開時它不會崩潰
無法在我的任何設備上重現該問題,但在 Crashlytics 上出現大量崩潰。 任何想法發生了什么?
private boolean hasPendingIntent() {
return getIntent() != null && getIntent().getCategories().contains(Intent.CATEGORY_LAUNCHER) && getIntent().getData() != null;
}
此代碼塊不是 null 安全的。 因為,在檢查一個集合是 null 還是不是 null 之前,您正試圖從中獲取數據。
根據此聲明,意圖不一定必須具有一個或多個類別。 更多請點擊鏈接。
無論過濾器中聲明了哪些類別,沒有類別的意圖始終通過此測試。
您需要先檢查一下,getIntent().getCategories() null 是不是 null? 之后,您應該檢查它是否包含Intent.CATEGORY_LAUNCHER
。
getIntent() != null &&
getIntent().getCategories() != null && getIntent().getCategories().contains(Intent.CATEGORY_LAUNCHER) &&
getIntent().getData()
您應該在 getIntent().getCategories(); 中檢查 null 類別; 例如: if(getIntent().= null && getIntenger().getCategories() !=null) {}
這將解決空指針。 您可能需要驗證空類別列表以保留當前邏輯。
使用前添加null點檢查,嘗試更改以下代碼:
private boolean hasPendingIntent() {
boolean b = false;
if (getIntent() != null && getIntent().getCategories() != null && getIntent().getData() != null) {
b = getIntent().getCategories().contains(Intent.CATEGORY_LAUNCHER);
}
return b;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.