私の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.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);