在我的应用程序中,当我的应用程序在后台时,我使用服务进行后台工作(将数据发送到服务器)。所以我创建了一个通知,告诉用户应用程序正在后台运行。我希望当用户点击通知我的应用程序来到前台所以我使用这样的Intent,Android用来启动我的应用程序
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.final_driver_notification_icon)
.setContentTitle("...")
.setContentText("...");
final Intent notintent = new Intent(getApplicationContext(),EntryScreen.class);
notintent.setAction(Intent.ACTION_MAIN);
notintent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendint = PendingIntent.getActivity(this, 0, notintent, 0);
mBuilder.setContentIntent(pendint);
int notID = 001;
startForeground(notID, mBuilder.build());
在模拟器中,一些物理设备工作正常。但在其他一些设备中,它从一开始就启动应用程序(它将Entry屏幕放在顶部)。 知道为什么会这样吗?
答案 0 :(得分:0)
您应该使用startForeground()启动服务。这是在前台启动服务并通过通知报告的方法。 Android - implementing startForeground for a service?
或尝试这样的事情:
public void initForeground() {
Intent intentForeground = new Intent(this, Activity.class);
intentForeground.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intentForeground,0);
pendingIntent.cancel();
pendingIntent = PendingIntent.getActivity(this, 0, intentForeground,0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.icon)
.setContentIntent(pendingIntent)
.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.something))
.setTicker(getString(R.string.something))
.setAutoCancel(false);
Notification notification = mBuilder.build();
startForeground(myID, notification);
}
希望它可以帮到你!