0

當嘗試從here實現示例代碼時,出現空指針異常。我在第2點和第3點的「在設備啓動時啓動報警」部分中存在一些令人困惑的示例代碼。這裏是我的main class觸發報警,我的broadcast receiver類接收廣播並觸發一個動作,而我的manifest file。我的logcat空指針異常錯誤指向廣播接收器類中的if語句。我的問題是:使用intent.action.BOOT_COMPLETED時獲取空指針

  1. 我是否正確地將樣本中的代碼實現到我的項目中?如果沒有,請給我一個正確的。因爲我不希望設備重新啓動時取消警報。我將不勝感激任何幫助,謝謝。

回答

4

變化:

if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) 

到:

if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) 

因此處理null操作字符串正確。這應該能夠消除你正在經歷的崩潰。

+0

得很快嘗試,但這些代碼是什麼'組件名稱接收器=新的組件名稱(上下文,SampleBootReceiver.class); PackageManager pm = context.getPackageManager();我有權將這段代碼放在我的'AddAlarm()'函數中嗎?因爲我不知道該把代碼放在哪裏。謝謝 – 2014-10-28 00:25:15

+0

@RadityaKurnianto:「我是否有權將此代碼放在我的AddAlarm()函數中?」 - 如果接收器可能未啓用,則需要使其能夠響應'BOOT_COMPLETED'廣播。 – CommonsWare 2014-10-28 00:32:30

+0

我試過了你的代碼,它能正常工作,但是當我嘗試重新啓動設備時,報警開始,意外的是設備凍結並重新啓動,我嘗試看到logcat,但沒有顯示出來。 – 2014-10-28 00:38:44

1

在您的清單中,您將啓用設置爲false。這可能會阻止您的BroadcastReceiver工作。

要至少解決NullPointerException異常,請嘗試: if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()){...}

雖然,它仍然是可能的,你的意圖是空,

+0

謝謝你的幫助,我真的很感激你給了我一個關於null意圖的線索,並且刪除了給我錯誤的代碼。 – 2014-10-28 01:15:27