web-dev-qa-db-ja.com

PendingIntentがAndroid 4.3でアクティビティを開かない

私の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)では動作しません。通知をタップしても何も起こりません。

これらをまとめる方法に私が見逃した何か変更はありましたか?

32
Lanbo

一部の4.3デバイスで問題があるようです。 requestCodeパラメータに0以外の値を指定することで解決できます。

例:

PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
79
markus-hi

それは私のために働きました:

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