2012-07-06 38 views
0

我正在嘗試製作報警程序。到目前爲止,我已經寫了一個活動,用戶可以選擇他希望鬧鐘關閉的時間。這工作正常。現在我需要使用鬧鈴管理器告訴操作系統在未來某個時候撥打我的一些代碼。製作報警程序 - 不能正常工作

Intent intent = new Intent(getApplicationContext(), to_call_when_alarm_goes_off.class); 
PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0); 
AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarms.cancel(pIntent); 

alarms.setRepeating(
     AlarmManager.RTC_WAKEUP, 
     System.currentTimeMillis()+1000, 
     AlarmManager.INTERVAL_DAY, 
     pIntent); 

這應該意味着一些所謂to_call_when_alarm_goes_off代碼得到執行一第二輸入按下後:只要在我加入時,我在我的主要活動按下測試按鈕被執行下面的代碼粗暴的方式測試這種按鈕....現在,這是我有點困惑。我不確定如何/在哪裏設置「to_call_when_alarm_goes_off」。我所做的只是一個新的類添加到我的項目如下:

package com.mycompany.alarmprogram; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class to_call_when_alarm_goes_off extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context arg0, Intent arg1) 
    { 
     // TODO Auto-generated method stub 
     Log.i("ALARM","TIME TO WAKE UP!!!"); 

    } 

} 

所有的代碼編譯,當我按下按鈕,在第一個代碼段的所有代碼被沒有崩潰執行 - 但一秒鐘後廣播接收器代碼不被執行。顯然我誤解了一些東西。

+1

發佈您的清單 – FoamyGuy 2012-07-06 16:45:31

回答

2

我假設您錯過了在清單文件中使用適當的操作字符串註冊接收器。如下所示。

  <receiver android:name=".to_call_when_alarm_goes_off" > 
       <intent-filter> 
        <action android:name="com.android.whatever.WHAT_EVER_NAM_YOU_WANNA_GIVE" /> 
       </intent-filter>// can change name/action string as par ur requirement. 
     </receiver> 

你需要設置相同的動作串在你的意圖,記住動作字符串必須在同一清單這裏intent.setAction("com.android.whatever.WHAT_EVER_NAM_YOU_WANNA_GIVE");在java中也。那麼只會刺激接收器。

您的代碼可以改變,如下所示。

Intent intent = new Intent(getApplicationContext(), to_call_when_alarm_goes_off.class); 
intent.setAction("com.android.whatever.WHAT_EVER_NAM_YOU_WANNA_GIVE");// added line 

PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0); 

AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

alarms.cancel(pIntent); 


alarms.setRepeating(
     AlarmManager.RTC_WAKEUP, 
     System.currentTimeMillis()+1000, 
     AlarmManager.INTERVAL_DAY, 
     pIntent); 
0

您需要AndroidManifest.xml註冊to_call_when_alarm_goes_off類作爲接收器:

<receiver android:name=".to_call_when_alarm_goes_off"></receiver>

API docs細節。