56

我对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 Here:

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

这够了吗??

4

3 回答 3

101

一个简单的答案是否定的。但是是的,您可以通过创建一个BroadCastReceiver在设备启动完成时启动警报来实现这一点。

用于<action android:name="android.intent.action.BOOT_COMPLETED" />在 BroadCastReceiver 类中捕获启动活动。

您需要在 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>
于 2012-08-20T08:26:01.657 回答
13

是的,即使在重新启动后,您也可以让 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"/>
于 2017-06-28T11:40:46.420 回答
3

在某些手机中仅添加

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

不起作用,您还必须添加

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

连同上一个

于 2017-08-02T13:49:56.660 回答