android棒棒糖设备上未触发广播接收器
下面是设置广播接收器的代码android棒棒糖设备上未触发广播接收器,android,broadcastreceiver,alarmmanager,android-5.0-lollipop,android-pendingintent,Android,Broadcastreceiver,Alarmmanager,Android 5.0 Lollipop,Android Pendingintent,下面是设置广播接收器的代码 PendingIntent pendingIntentScheduler = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context
PendingIntent pendingIntentScheduler = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntentScheduler);
和BroadcastReceiver类的代码
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
Log.d("onReceive", "this is broadcast reciever");
}
Android清单许可证
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application>
<receiver android:name=".name.recieverName" >
<intent-filter>
<action android:name="com.intentIWantToOpenOnRecievingBroadcast" />
</intent-filter>
</receiver>
</application>
这段代码在19年前与api配合良好。它不适用于棒棒糖api 21。有人找到了解决此问题的方法吗?试试这个
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, AlarmActive, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= 19)
am.setExact(AlarmManager.RTC_WAKEUP, alarmTime.getTimeInMillis(), pi);
else
am.set(AlarmManager.RTC_WAKEUP, alarmTime.getTimeInMillis(), pi);
看看
或
使用“设置精确”而不是“设置”。另外,您使用的是“WakefulBroadcastReceiver”还是“BroadcastReceiver”?在旁注中,我最近提出了一个可能相关的问题:Thanx用于响应..我正在使用BroadcastReceiver,我应该使用WakefulBroadcastReceiver吗?.是的,使用WakefulBroadcastReceiver,尽管我不确定这是否会改变像上面这样简单的代码的行为。但是,如果您想从接收器启动service intent,建议使用它(调用startWakefulService和completeWakefulIntent函数)。有关于此的解决方案吗?我现在也有同样的问题。。我的代码可以使用多年,直到我把我的设备换成安卓5