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