我创建了一个服务,在一定的时间间隔后显示状态栏通知。 我还创建了广播接收器,在手机重启或开机时启动服务。我面临的问题是,当手机重启时,我会在栏中看到通知,但之后应用程序启动。我不希望应用程序自行启动,只应在用户点击通知时启动。
我的Broad Cast Receiver代码:
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
try
{
Intent intent1 = new Intent(context, NotificationService.class);
context.startService(intent1);
}
catch(Exception e)
{
}
}
}
我的通知代码是:
public static void showNotification(Context context )
{
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher, "Pull Me Down!!", 1000);
Intent intent = new Intent(context,X.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
notification.setLatestEventInfo(context, "I came!!", "My First Notifcation" , pendingIntent);
notificationManager.notify(MY_ID, notification);
}
我在我服务的onCreate
中调用上述方法。并在我的X活动类中调用它:
NotificationService.setActivity(StatusBarNotificationActivity.this);
startService(new Intent(getApplicationContext(), NotificationService.class));
但不知道为什么当电话启动时会显示通知,但几秒后X活动也会启动。
答案 0 :(得分:1)
解决了它,只是在方法之外声明了NotificationManager
和Notification
,并且它有效。
答案 1 :(得分:0)
也许您可以尝试使用“前台服务”。要使用前台服务,您只需要调用startForeground方法。
startForeground(NOTIFICATION_ID, notification);
但如果您不希望状态栏上始终显示通知,则必须控制服务生命周期。希望这个答案对你有所帮助。 :)