如何在每48小时后显示android通知?
我尝试了以下android通知代码,它工作正常,但当我启动android应用程序时,它会给我弹出通知 我想在每48小时后显示一个通知,我怎么做 我需要做哪些更改才能使其正常工作 通知代码如何在每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
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;
}
}