如何实现报警接收器?
How to implement an alarm receiver?
我开始了解 AlarmManager
,我想发起广播以从服务器获取一些信息。文档清楚地说明了意图和警报,但我找不到任何关于接收端应该是什么样子的信息。
这是我的闹钟代码:
AlarmManager aMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
aMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 10000,
AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
我的AlarmReceiver
是这样的:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(MainActivity.TAG, "Received intent");
}
}
但是没有任何反应。我添加了一个按钮来像这样触发广播:
public void btnTrigger_onClick(View view) {
Intent i = new Intent(this, AlarmReceiver.class);
sendBroadcast(i);
}
这里什么也没有发生。
我以前使用过广播,但只用过 registerReceiver
,但我现在不想在我的 Activity
中处理广播。
显式广播 - Intent
具有组件名称(即 class)的广播 - 需要清单中的 <receiver>
元素才能工作。
我开始了解 AlarmManager
,我想发起广播以从服务器获取一些信息。文档清楚地说明了意图和警报,但我找不到任何关于接收端应该是什么样子的信息。
这是我的闹钟代码:
AlarmManager aMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
aMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 10000,
AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
我的AlarmReceiver
是这样的:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(MainActivity.TAG, "Received intent");
}
}
但是没有任何反应。我添加了一个按钮来像这样触发广播:
public void btnTrigger_onClick(View view) {
Intent i = new Intent(this, AlarmReceiver.class);
sendBroadcast(i);
}
这里什么也没有发生。
我以前使用过广播,但只用过 registerReceiver
,但我现在不想在我的 Activity
中处理广播。
显式广播 - Intent
具有组件名称(即 class)的广播 - 需要清单中的 <receiver>
元素才能工作。