32

在我的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 的所有测试设备上运行良好。

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

我错过的这些组合方式是否发生了变化?

4

2 回答 2

80

某些 4.3 设备上似乎存在问题。它可以通过为requestCode参数提供非 0 值来解决。

例子:

PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
于 2013-10-03T18:52:04.653 回答
2

这对我有用:

Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(100);
contentIntent = PendingIntent.getActivity(this, randomInt, intent, PendingIntent.FLAG_UPDATE_CURRENT);
于 2015-01-21T21:39:06.877 回答