在Android中发送通知时出现混乱

在Android中发送通知时出现混乱,android,notifications,retention,Android,Notifications,Retention,我试图通过以下代码发送推送通知。 问题:我想在两天后向用户发送推送通知 主课 Intent intent = new Intent(MainActivity.this, NotificationReciever.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0); AlarmManager am = (AlarmManager)getSystemServ

我试图通过以下代码发送推送通知。 问题:我想在两天后向用户发送推送通知

主课

Intent intent = new Intent(MainActivity.this, NotificationReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_DAY*2, pendingIntent);
接受者类是

public class NotificationReciever extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent arg1) {
    showNotification(context);

}


private void showNotification(Context context) {
    // TODO Auto-generated method stubMain

    PackageManager pm = context.getApplicationContext().getPackageManager();
    ApplicationInfo ai;
    try {
        ai = pm.getApplicationInfo( context.getPackageName(), 0);
    } catch (final NameNotFoundException e) {
        ai = null;
    }
    final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");

    Intent intent = new Intent(context, MainActivity.class);
    PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.ic_launcher)
    .setContentTitle(applicationName)
    .setContentText("We haven't seen you in a while. Play now");
    mBuilder.setContentIntent(pi);
    mBuilder.setDefaults(Notification.DEFAULT_SOUND);
    mBuilder.setAutoCancel(true);
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(0, mBuilder.build());
}
}

混淆:当我运行此代码时,通知会立即发送,两天后也会发送。我不想立即发送通知,我只想在两天后一次又一次地发送通知。 第二,我必须在用户每次启动应用程序时调用上述代码,还是我必须只调用一次?或者我两天后再打电话?只要安装了应用程序,我想每两天发送一次通知

请引导我。
谢谢

设置重复方法2参数建议第一次报警何时关闭。您已将其指定为
System.currentTimeMillis()
,因此它会立即关闭

更改:

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_DAY*2, pendingIntent);

关于你的第二个问题

第二,我是否必须在用户每次启动时调用上述代码 应用程序还是我只需调用一次?或者我得在两点后打电话 天?我想每两天发送一次通知,只要 应用程序已安装

你得打一次电话。该通知将每两天显示一次,直到卸载应用程序


您可以注册一个
BroadcastReceiver
,以便在首次启动应用程序时发送。您可以在此处设置重复报警。如果安装了更新版本的应用程序,您可能需要处理此问题。

非常感谢:)赏金将在22小时后颁发。赏金已颁发,感谢您的帮助。还有一件事我想知道的是,如果我在2天后发送了发送通知的电话。如何暂停通知?
long updateInterval = AlarmManager.INTERVAL_DAY*2;
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + updateInterval, updateInterval, pendingIntent);