PendingIntent不能在Android 4.3中打开Activity

在我的Service ,我使用以下代码打开正常运行的通知:

 private final static NOTIFICATION_ID = 412434; private void startNotification() { NotificationCompat.Builder builder = new NotificationCompat.Builder( this); builder.setSmallIcon(R.drawable.notification); builder.setContentTitle("Running"); final Intent intent = new Intent(this, MainActivity.class); intent.setAction(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); final PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(contentIntent); builder.setOngoing(true); builder.setAutoCancel(false); notification = builder.build(); startForeground(NOTIFICATION_ID, notification); } 

PendingIntent是在通知被点击时打开MainActivity 。 使用Android 2.3.3,2.3.5和Android 4.1,这在我的所有testing设备上都可以正常工作。

它不起作用,但是在我的Nexus 7(Android 4.3)上,这根本不起作用。 当我点击通知时没有任何反应。

这些放在一起的方式有什么改变,我错过了?

在一些4.3设备上似乎有一个问题。 它可以通过给requestCode参数提供一个非0值来解决。

例:

 PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

这对我有用:

 Random randomGenerator = new Random(); int randomInt = randomGenerator.nextInt(100); contentIntent = PendingIntent.getActivity(this, randomInt, intent, PendingIntent.FLAG_UPDATE_CURRENT);