广播接收器不发射

Broadcast receiver not firing

我正在编写一个应用程序,它会在到达特定日期/时间后触发特定方法。但是,我的广播接收器没有启动...我可以看到警报已设置。

我在 activity 中的方法:

 private void setAlarm(Date date){

        Intent activate = new Intent(this, Alarm.class);
        AlarmManager alarms ;
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(date.getTime());
        PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, activate, 0);
        alarms = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        Log.d("ALARM","Setting alarm");
        alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent);
        Log.d("ALARM","Setting time "+cal.getTimeInMillis());
    }

我的广播接收器:

public class Alarm extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("ALARM", "RING RING");

    }
}

我在 <application> 标签内的清单:

<receiver android:name=".Alarm" android:process=":remote" >
        <intent-filter>
            <action android:name="com.package.feature.subpackage.arrangealarm.ALARM_ACTION"/>
        </intent-filter>
    </receiver>

有谁知道为什么这没有触发?

您的代码似乎没有任何问题(我复制了代码片段并让 Android Studio 生成了一个 BroadcastReceiver,我像您一样为其设置了 android:process=":remote")。

当我 运行 应用程序时,BroadcastReceiver 触发,但当我 select "No Filters" 在 Logcat设置(右侧),我选择"Show only selected application"时没有。

发生这种情况是因为您使用了 android:process=":remote"。 BroadcastReceiver 将 运行 在另一个进程而不是 "main" 应用程序进程,因此 "RING RING" 将出现在另一个进程 ID 下。