如何调用 WakefulBroadcastReceiver

How to call WakefulBroadcastReceiver

我已经阅读了很多关于 WakefulBroadcastReceiver...的内容,但对于如何从主 activity 调用它却一无所知。每当我搜索如何调用 WakefulBroadcastReceiver 时,结果总是显示如何从 WakefulBroadcastReceiver...

调用 IntentService

为了调用 IntentService 我们在 activity 或 WakefulBroadcastReceiver 中编写代码“startService()”... 调用 BroadcastReceiver 我们写

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

但我找不到任何地方如何调用 WakefulBroadcastReceiver... 请帮助..

android.support.v4.content.WakefulBroadcastReceiver 是一个帮助程序 class,它接收设备唤醒事件。

您应该覆盖 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();
    }
} 

在清单中添加

 <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"/>

有关完整的工作示例,请参阅此 link:http://www.concretepage.com/android/android-alarm-clock-tutorial-to-schedule-and-cancel-alarmmanager-pendingintent-and-wakefulbroadcastreceiver-example