不报警管理器甚至重新启动后仍然存在?(does Alarm Manager persist even

2019-06-17 19:02发布

我真的很新的到Android,我一直在研究有关的报警。 我想报警,如果有那一天生日。 我已经使用警报管理器。 我很困惑,因为我已阅读,它重启后清除。 所以我只是用模拟器我没有Android手机。

这里是我的代码:

public void schedAlarm() {
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    Intent intent = new Intent(this, AlarmService.class);
    pendingIntent = PendingIntent.getBroadcast(this, contact.id, intent, PendingIntent.FLAG_ONE_SHOT);
    am.setRepeating(AlarmManager.RTC, timetoAlarm, nextalarm, pendingIntent);
}

我做了这个BroadcastRecever在替换为AlarmSerivce这里:

public void onReceive(Context context, Intent intent) {
    nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    CharSequence from = "It Birthday!";
    CharSequence message =" Greet your friend.";
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
    Notification notif = new Notification(R.drawable.ic_launcher, "Birthday", System.currentTimeMillis());
    notif.setLatestEventInfo(context, from, message, contentIntent);
    nm.notify(1, notif);
 }

这够了吗??

Answer 1:

一个简单的答案是否定的。 但是,是的,你可以通过创建一个实现这个BroadCastReceiver ,同时启动装置的完成,将启动报警。

使用<action android:name="android.intent.action.BOOT_COMPLETED" />在广播接收器类诱捕启动活动。

您需要在AndroidManifest.xml中添加上面一行如下,

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


Answer 2:

是的,你可以让AlarmManager甚至在重新启动后的工作。 也许,这是最简单的方法:在你的AndroidManifest.xml中添加以下代码:

<receiver android:name=".AlarmReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

不要忘了包括用户权限的AndroidManifest.xml中如下:

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


Answer 3:

在一些手机只增加

<action android:name="android.intent.action.Boot_COMPLETED" />

不工作,你还必须添加

<action android:name="android.intent.action.QUICKBOOT_POWERON" />

随着前一个



文章来源: does Alarm Manager persist even after reboot?