2015-10-04 69 views
0

在我的Android應用程序中,我試圖每5秒鐘在日誌中打印一條消息。我使用的是AlarmManager和BroadcastReceiver的簡單配置,似乎除了我以外都適用於每個人。這是廣播接收器的代碼:Android - 與AlarmManager和BroadcastReceiver的故障

import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class ServiceAlarmReceiver extends BroadcastReceiver {  

private final String TAG = "com.example.ahsandroidapplication"; 

@Override 
public void onReceive(Context context, Intent intent) { 

    Log.i(TAG, "Broadcast received"); 

} 

public void setAlarm(Context context){ 

    System.out.println("Service started"); 

    long alertTime = System.currentTimeMillis() + 5000; 
    Intent alertIntent = new Intent(context, ServiceAlarmReceiver.class); 

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, alertTime, PendingIntent.getBroadcast(context, 1, alertIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT)); 


} 
} 

的問題是,廣播接收機不能檢測到任何廣播。誰能告訴我我做錯了什麼?任何幫助表示讚賞。

編輯:

經過一番東張西望,我的結論是,我需要聲明的接收器清單。如果這是問題,我會怎麼做呢?

+0

發生了什麼 – haseeb

回答

0

好了,所以我在清單中定義的接收器,現在它工作正常:

<receiver android:name=".ServiceAlarmReceiver" 
     android:enabled="true"> 
    <intent-filter> 
    <action android:name="com.example.ahsandroidapplication.mybroadcast"></action> 
    </intent-filter> 

到接收端,我添加了一行:

alertIntent.setAction("com.example.ahsandroidapplication.mybroadcast"); 

出於實驗目的,我將它設置爲每秒關閉,並在我的日誌中爆炸。現在我會看到關於取消它。

1

改爲使用setRepeating()。這是專爲這些目的

+0

我做了你的建議,但問題仍然是沒有收到廣播。 –

+0

發佈你如何註冊這個接收器來編輯你的問題 – haseeb