Android 报警管理器isn';不要在重新启动后重复
我对报警管理器有问题。我创建了报警管理器,每15秒重复显示一次toast 重新启动我的设备后,toast可见,但只有一次。我想每15秒重复一次,即使在重新启动后也是如此 我可以添加什么来解决这个问题?这可能吗 这是我的代码(AlarmReceiver类扩展了BroadcastReceiver): 还有我的AndroidManifest.xmlAndroid 报警管理器isn';不要在重新启动后重复,android,broadcastreceiver,alarmmanager,android-alarms,Android,Broadcastreceiver,Alarmmanager,Android Alarms,我对报警管理器有问题。我创建了报警管理器,每15秒重复显示一次toast 重新启动我的设备后,toast可见,但只有一次。我想每15秒重复一次,即使在重新启动后也是如此 我可以添加什么来解决这个问题?这可能吗 这是我的代码(AlarmReceiver类扩展了BroadcastReceiver): 还有我的AndroidManifest.xml <receiver android:name=".view.activity.AlarmReceiver" android:enabled="tru
<receiver android:name=".view.activity.AlarmReceiver" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
看起来您只需要在onReceive方法中调用SetAlarm函数,并在清单中侦听sent事件 在你的舱单上
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
//New
<action android:name="com.packagename.custombroadcast" />
</intent-filter>
好的,我考虑过了,但我希望可能会有更好的解决方案来实现这一点。谢谢你的回答;-)由于您的报警意图是显式调用接收器,因此不需要自定义操作。只需检查
onReceive()
中的Intent操作是否为null。如果是,请举杯;否则调用您的方法设置警报。这是完美的工作!谢谢
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction()==null){
Toast.makeText(context, "lol", Toast.LENGTH_LONG).show();
} else
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent1 = new Intent(context, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent1, 0);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15000, pi);
}
}
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
//New
<action android:name="com.packagename.custombroadcast" />
</intent-filter>
Intent intent = new Intent();
intent.setAction("com.packagename.custombroadcast");
//Use Context.sendBroadcast
sendBroadcast(intent);