如何在每48小时后显示android通知?

如何在每48小时后显示android通知?,android,android-layout,notifications,push-notification,Android,Android Layout,Notifications,Push Notification,我尝试了以下android通知代码,它工作正常,但当我启动android应用程序时,它会给我弹出通知 我想在每48小时后显示一个通知,我怎么做 我需要做哪些更改才能使其正常工作 通知代码 Intent notificationIntent = new Intent(MainActivity.this, Activity.class); PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.thi

我尝试了以下android通知代码,它工作正常,但当我启动android应用程序时,它会给我弹出通知

我想在每48小时后显示一个通知,我怎么做

我需要做哪些更改才能使其正常工作

通知代码

 Intent notificationIntent = new Intent(MainActivity.this, Activity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent, 0);

         NotificationManager notificationManager = (NotificationManager) MainActivity.this
                    .getSystemService(Context.NOTIFICATION_SERVICE);

         Notification noti = new NotificationCompat.Builder(MainActivity.this)
                            .setSmallIcon(R.drawable.ic_launcher)
                            .setTicker("ticker message")

                            .setWhen(System.currentTimeMillis())
                            .setContentTitle("HELLO")
                            .setContentText("PLEASE CHECK WE HAVE UPDATED NEWS")
                            .setContentIntent(contentIntent)
                            //At most three action buttons can be added
                            .setAutoCancel(true).build();
        int notifyID =0;
        notificationManager.notify(notifyID, noti);
这样做: -您的通知将在活动开始时打开。 -如果您在中添加计时器,则仅当您打开应用程序时,计时器才会显示

在您的情况下,您应该启动一项服务,其中您将有一个计时器,每48小时向Androis O.S.发送一个通知

要执行此循环,您需要一个timmer,您可以在此处查看有关服务的更多信息:

您可能希望使用AlarmManager类来安排通知。下面是一个应该做到这一点的片段:

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(contentIntent);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                                 System.currentTimeMillis() + AlarmManager.INTERVAL_DAY * 2,
                                 AlarmManager.INTERVAL_DAY * 2,
                                 contentIntent);

以下是一些与您主要活动所需内容相近的内容:

    Intent notificationIntent = new Intent(context, ShowNotification.class);
    PendingIntent contentIntent = PendingIntent.getService(context, 0, notificationIntent,
                                                           PendingIntent.FLAG_CANCEL_CURRENT);

    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    am.cancel(contentIntent);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
            + AlarmManager.INTERVAL_DAY * 2, AlarmManager.INTERVAL_DAY * 2, contentIntent);
然后,在另一个名为ShowNotification.java的文件中添加以下内容(假设您的主要活动名为MainActivity):


谢谢,
Intent notificationIntent
Notification
code在哪里?我必须调用它,以便在我启动应用程序时不获取它,仅在每48小时之后获取一次。在挂起的Intent中,您需要指定一个单独的公共类来创建和执行您的通知代码。您可以使用与您已有的相同的基本通知代码。谢谢@Scott我是Android开发人员的新手。请更新您的答案,这将是非常有帮助的。单击该通知应用程序未打开?您好,转到此:或转到此:@SimplePlan两个代码都不工作:(如何设置每一小时一次?我想显示应用程序是否打开的通知setRepeating()的第二个和第三个参数)方法分别指定初始警报的时间和后续警报的间隔。您希望使用的单位是AlarmManager.interval_HOUR。但如位于、long、long、android.app.PendingEvent的文档中所述),如果使用API19及更高版本,此方法在更短的持续时间内将不再有效。您可能希望从“AlarmManager.INTERVAL\u DAY*2”位中删除“*2”。
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;

public class ShowNotification extends Service {

    private final static String TAG = "ShowNotification";

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

        Intent mainIntent = new Intent(this, MainActivity.class);

        NotificationManager notificationManager
            = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

        Notification noti = new NotificationCompat.Builder(this)
            .setAutoCancel(true)
            .setContentIntent(PendingIntent.getActivity(this, 0, mainIntent,
                              PendingIntent.FLAG_UPDATE_CURRENT))
            .setContentTitle("HELLO " + System.currentTimeMillis())
            .setContentText("PLEASE CHECK WE HAVE UPDATED NEWS")
            .setDefaults(Notification.DEFAULT_ALL)
            .setSmallIcon(R.drawable.ic_launcher)
            .setTicker("ticker message")
            .setWhen(System.currentTimeMillis())
            .build();

        notificationManager.notify(0, noti);

        Log.i(TAG, "Notification created");
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
}