如何根据通知打开特定的activity
How to open a specific activity based on Notification
我目前正在开发一个提醒应用程序,在该应用程序中,用户会收到带有提醒名称的通知,然后会被重定向到 activity,其中包含详细的提醒文本。
但是,我每次只能重定向到相同的 activity。
我正在使用此代码:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0);
notification.setLatestEventInfo(this, title, text, contentIntent);
所以这会在单击通知时重定向到 MainActivity。我想重定向到一个单独的屏幕,然后根据键值在 activity 上显示文本。
我该如何实现?
谢谢
只需使用另一个 Activity
and/or 更改 PendingIntent
在您用于创建 PendingIntent
的 Intent
上附加额外信息:
Intent launchIntent = new Intent(this, AnotherActivity.class)
launchIntent.putExtra("myKey", "myValue");
//....
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, launchIntent , 0);
notification.setLatestEventInfo(this, title, text, contentIntent);
然后,在你 Activity
的 onCreate()
:
//...
getIntent().getStringExtra("myKey")
//do your stuff..
只需传递意图中的值即可。例如
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0);
contentIntent.putExtra("phone", value);
contentIntent.putExtra("name", value);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, contentIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
问题已经被回答并被接受,但这里有另一种方法:
int mId = 1;
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TwoActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder builder = new Notification.Builder(this)
.setContentIntent(pendingIntent)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Title")
.setContentText("Content")
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setNumber(1);
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(mId, builder.build());
我目前正在开发一个提醒应用程序,在该应用程序中,用户会收到带有提醒名称的通知,然后会被重定向到 activity,其中包含详细的提醒文本。 但是,我每次只能重定向到相同的 activity。 我正在使用此代码:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0);
notification.setLatestEventInfo(this, title, text, contentIntent);
所以这会在单击通知时重定向到 MainActivity。我想重定向到一个单独的屏幕,然后根据键值在 activity 上显示文本。 我该如何实现?
谢谢
只需使用另一个 Activity
and/or 更改 PendingIntent
在您用于创建 PendingIntent
的 Intent
上附加额外信息:
Intent launchIntent = new Intent(this, AnotherActivity.class)
launchIntent.putExtra("myKey", "myValue");
//....
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, launchIntent , 0);
notification.setLatestEventInfo(this, title, text, contentIntent);
然后,在你 Activity
的 onCreate()
:
//...
getIntent().getStringExtra("myKey")
//do your stuff..
只需传递意图中的值即可。例如
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0);
contentIntent.putExtra("phone", value);
contentIntent.putExtra("name", value);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, contentIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
问题已经被回答并被接受,但这里有另一种方法:
int mId = 1;
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TwoActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder builder = new Notification.Builder(this)
.setContentIntent(pendingIntent)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Title")
.setContentText("Content")
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setNumber(1);
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(mId, builder.build());