Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 报警管理器isn';不要在重新启动后重复_Android_Broadcastreceiver_Alarmmanager_Android Alarms - Fatal编程技术网

Android 报警管理器isn';不要在重新启动后重复

Android 报警管理器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

我对报警管理器有问题。我创建了报警管理器,每15秒重复显示一次toast

重新启动我的设备后,toast可见,但只有一次。我想每15秒重复一次,即使在重新启动后也是如此

我可以添加什么来解决这个问题?这可能吗

这是我的代码(AlarmReceiver类扩展了BroadcastReceiver):

还有我的AndroidManifest.xml

<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);