如何调用WakefulBroadcastReceiver

时间:2016-12-18 11:17:00

标签: java android android-broadcastreceiver

我已经阅读了很多关于WakefulBroadcastReceiver的内容......但是对于如何从主要活动中调用此内容并没有了解。无论何时我搜索如何拨打WakefulBroadcastReceiver,结果总会告诉我如何从IntentService拨打WakefulBroadcastReceiver ...

要致电IntentService,我们会在活动或startService()中编写代码“WakefulBroadcastReceiver”... 致电BroadcastReceiver我们写

AlarmManager am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
      PendingIntent.getBroadcast(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT));

但是我找不到任何地方如何拨打WakefulBroadcastReceiver ... 请帮忙..

1 个答案:

答案 0 :(得分:0)

android.support.v4.content.WakefulBroadcastReceiver是一个辅助类,它接收设备唤醒事件。

你应该使用onReceive()方法来调用服务或执行任务。

WakefulBroadcastReceiver使用唤醒锁,因此您必须在AndroidManifest.xml中提供WAKE_LOCK权限。 WakefulBroadcastReceiver实现为

public class AlarmReceiver extends WakefulBroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        MainActivity.getTextView2().setText("Enough Rest. Do Work Now!");
        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
        ringtone.play();
    }
} 

in menifest add

 <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

像这样调用AlarmReceiver:

    Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
    PendingIntent  pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0);

还在清单中添加接收器标签:

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

有关完整的工作样本,请参阅以下链接:http://www.concretepage.com/android/android-alarm-clock-tutorial-to-schedule-and-cancel-alarmmanager-pendingintent-and-wakefulbroadcastreceiver-example