Android AlarmManager可以在其他应用程序中接收

Android AlarmManager可以在其他应用程序中接收,android,alarmmanager,Android,Alarmmanager,我想每十分钟运行一次任务,我使用了AlarmManager如下所示: public static void startAlarmOnce(Context context, String action, long triggerAtMillis) { Intent intent = new Intent(action); PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,0);

我想每十分钟运行一次任务,我使用了
AlarmManager
如下所示:

public static void startAlarmOnce(Context context, String action, long triggerAtMillis) {
    Intent intent = new Intent(action);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}
但是,有一个问题:如果注册了BroadcastReceiver的人使用相同的操作,那么他可以接收广播

那么,如何像LocalBroadcast那样在我自己的应用程序中保持广播?

使用:


其中,
YourBroadcastReceiver.class
应该是您作为BroadcastReceiver实现的类的名称。

这里我不能给出具体的
YourBroadcastReceiver
。它是在我的
BaseActivity
中定义的。如果我写
BaseActivity.MyBroadcastReceiver.class
,接收者什么都接收不到。只需用
static
关键字声明内部类,如下所示:
static class YourBroadcastReceiver{…}
我试过了。但是方法
onReceive(Context-Context,Intent-Intent)
从未执行过
public static void startAlarmOnce(Context context, String action, long triggerAtMillis) {
    Intent intent = new Intent(context, YourBroadcastReceiver.class);
    intent.setAction(action);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent,0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
}