重启后Android警报重置不起作用

Posted

技术标签:

【中文标题】重启后Android警报重置不起作用【英文标题】:Android Alarm reset after reboot not working 【发布时间】:2014-04-26 10:27:37 【问题描述】:

我有一个名为 StopAlarmReceiver 的类和另一个 BootHandler

BootHandler在重启后重置警报,这是在启动之前设置的。我的问题是 BootHandler 设置了警报但没有被触发

清单文件中的条目。

    <receiver
        android:name="com.sign.android.myscheduler.app.StopAlarmReceiver"
        android:enabled="true"
        android:exported="true" >
    </receiver>

    <receiver
        android:name="com.sign.android.myscheduler.app.BootHandler"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

BootHandler 中的代码。

AlarmManager mgr= (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, StopAlarmReceiver.class);
PendingIntent pi = PendingIntent.getService(context, 1, i, 0);

long time = sharedPreferences.getLong("Old_time", 0);
Log.e(TAG, "New time: " +new Date(SystemClock.elapsedRealtime() + time));

mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + time, 5000, pi);

【问题讨论】:

您是否拥有BOOT_COMPLETED 权限?您是否在此应用中运行过活动? 是的,我有 权限。用户可以通过登录 App Activity 来设置警报。然后他关闭了应用程序。 【参考方案1】:

清单 只需写两个接收器 1 用于警报和 1 用于处理启动

  <receiver
        android:name="packagename.AlarmReceiver"

        >

    </receiver>

    <!-- Will not be called unless the application explicitly enables it -->
     <receiver android:name="com.avion.contact_app.DeviceBootReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

添加以下权限

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


<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

在 DeviceBootReceiver 类中首先检查意图操作

@Override
public void onReceive(Context context, Intent intent) 
    SharedPreferences prefs = context.getSharedPreferences(
            "DefaultReminder", context.MODE_PRIVATE);

    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))

    
//do whatever you want after reboot or fire alarm again


【讨论】:

以上是关于重启后Android警报重置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android:多个警报不起作用

在android oreo中设备重启后PeriodicWorkRequest不起作用

JavaScript 警报在 Android WebView 中不起作用

光子。在 Android 上重启 WI-FI 后 OnRoomListUpdate 不起作用

Android 警报管理器 setExactAndAllowWhileIdle() 在打盹模式下的 Android 7.0 Nougat 中不起作用

phonegap javascript警报不起作用?