Android 永久广播接收机?

Android 永久广播接收机?,android,broadcastreceiver,Android,Broadcastreceiver,我使用广播接收器在一个具有闹钟功能的应用程序中触发警报。这个类目前非常简单 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent scheduledIntent = new Intent(context, AlarmUp.class); scheduledIntent.addFlags

我使用广播接收器在一个具有闹钟功能的应用程序中触发警报。这个类目前非常简单

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent scheduledIntent = new Intent(context, AlarmUp.class);
    scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(scheduledIntent);

}}
问题是,如果设备重新启动,它会被取消,因此警报不会触发。有没有办法让接收器在重新启动后自动继续?Thx

有没有办法让接收器在一次故障后自动继续 重启

不幸的是,没有。当手机关机时,系统会销毁所有挂起的意图

要解决您的问题,您应该在
android.intent.action.BOOT\u上进行筛选,以在设备启动时调用
BroadcastReceiver
。然后您可以重新安排所有需要的警报

在你的清单上有这样的东西:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<receiver
    android:name=".broadcasts.InitReceiver"
    android:exported="false" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.TIME_SET" />
        <action android:name="android.intent.action.TIMEZONE_CHANGED" />
    </intent-filter>
</receiver>
(此代码来自我的一个应用程序。某些对象可能在Android SDK中不可用。)

为了能够重新安排所有警报,您需要将它们存储在某个地方

例如,你可以自己写

  • 多亏了这个小部件,它可以很好地与其他android组件配合使用
  • 这不是最简单的解决方案,但如果你想遵循安卓的指导原则,这是一条可行之路
可能还有其他更简单的方法来存储警报,比如使用

  • 它很容易使用
  • 但您需要以友好的方式存储多个警报
最后一种选择是,您可以创建包含信息的对象,将其序列化并将其作为文件存储在SD卡上

  • 它既丑陋又不灵活
  • 但实施起来并不难
如果您想更仔细地了解不同的存储选项,可以在以下文档中阅读:


我希望这一切对你有帮助。:)

编辑您的清单文件

<receiver android:name=".RecieverName" 
             android:enabled="true" 
             android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

它将在设备重新启动时自动启动

同时声明对它的许可

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>


我正在使用AlarmManager自动继续,因此我需要永久存储报警名称、RepeatMode、铃声和其他首选项,并且重新启动后必须重新计算重新设置报警的间隔?是。如果你愿意,我将完成我的回答来解释这一部分。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>