PendingIntent未在Android 4.3中打开活动

时间:2013-09-26 15:04:09

标签: android android-intent android-notifications

在我的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)上,这根本不起作用。点击通知时没有任何反应。

我错过了哪些内容会发生变化?

2 个答案:

答案 0 :(得分:79)

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

示例:

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

答案 1 :(得分:2)

这对我有用:

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