简体   繁体   English

Alarmanager随机附带每日通知

[英]Daily Notification comes random with Alarmanager

Currently I try to setup a Daily Notification in my app everything work, but the daily notifications doesn't work it comes randomly. 目前,我尝试在我的应用中设置每日通知,但一切正常,但每日通知不起作用,它是随机产生的。

MainActivity how i set the Alarmanager: MainActivity我如何设置Alarmanager:

Intent i = new Intent(this, NotificationDbReceiver.class);
    Intent start = new Intent(this, StartService.class);

    PendingIntent sender = PendingIntent.getBroadcast(this, 0, i, 0);
    Calendar calendar = Calendar.getInstance();
            Calendar now = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 10);
            calendar.set(Calendar.MINUTE, 00);
            calendar.set(Calendar.SECOND, 00);

            if (calendar.before(now)) {
                calendar.add(Calendar.DATE, 1);
            }

            AlarmManager am = (AlarmManager) this
                    .getSystemService(ALARM_SERVICE);

            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
                am.set(AlarmManager.RTC_WAKEUP,
                        AlarmManager.INTERVAL_DAY, sender);
            } else if (Build.VERSION_CODES.KITKAT <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                am.setExact(AlarmManager.RTC_WAKEUP,
                        AlarmManager.INTERVAL_DAY, sender);
            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
                        AlarmManager.INTERVAL_DAY, sender);
            }

Thats my BroadcastReceiver: 那就是我的BroadcastReceiver:

@Override
public void onReceive(Context context, Intent intent) {

    Intent service1 = new Intent(context, StartService.class);
    context.startService(service1);
}

And this is my Service: 这是我的服务:

public class StartService extends Service {

private final int ID = 0;

private Context mContext;


@Override
public void onCreate() {
    super.onCreate();

    mContext = getBaseContext();

    Log.i("onCreate", "I'm in");

    createNotification();

}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

private void createNotification() {
    Log.i("createNotification", "I'm in");
    Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext);
    mBuilder.setSmallIcon(R.drawable.ic_stat_notification)
            .setColor(ContextCompat.getColor(mContext, R.color.primary))
            .setContentTitle("Blablabla")
            .setContentText("Blablabla")
            .setStyle(new NotificationCompat.BigTextStyle().bigText("Blablabla"))
            .setSound(soundUri)
            .setDefaults(Notification.DEFAULT_VIBRATE)
            .setCategory(NotificationCompat.CATEGORY_MESSAGE)
            .setPriority(Notification.PRIORITY_HIGH)
            .setAutoCancel(true);

    Intent mIntent = new Intent(mContext, MainActivity.class);
    PendingIntent mPendingIntent = PendingIntent.getActivity(mContext, 0, mIntent, 0);
    mBuilder.setContentIntent(mPendingIntent);
    Notification mNotification = mBuilder.build();
    mNotification.flags = Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
    NotificationManagerCompat.from(mContext).notify(ID, mNotification);
}  
}

I hope someone can help me. 我希望有一个人可以帮助我。 I have already read some Questions here on stackoverflow, but no answer from the Questions helped me. 我已经在这里阅读了一些关于stackoverflow的问题,但是这些问题的答案都没有帮助我。

May be you are initializing the AlarmManager multiple times (for example, whenever the Activity starts). 可能是您多次初始化AlarmManager (例如,每当Activity启动时)。 Try to set it only once and check. 尝试仅设置一次并检查。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM