Android 通知当前打开 运行 应用而不是创建新进程?
Android Notification open currently running app instead of creating a new process?
我收到了带有自定义 Uri 方案的推送通知:myapp://main
在我的 onReceive
中,我创建了一个通知:
public void createNotification(Context context, String title, String message, String summary, Uri uri) {
Notification.Builder notification = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(message)
.setSmallIcon(R.drawable.ic_launcher)
.setDefaults(Notification.DEFAULT_LIGHTS)
.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && summary != null)
notification.setSubText(summary);
Intent intent = new Intent("android.intent.action.VIEW", uri);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
notification.setContentIntent(pendingIntent);
Notification noti;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
noti = notification.build();
else
noti = notification.getNotification();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, noti);
}
当我点击该通知时,它会打开一个新的 Activity,这是我的 MainActivity。但它似乎也创建了一个全新的过程,而不是仅仅打开我当前的 运行 应用程序。
我是否缺少一些标志?
您可以如下设置Intent,Intent动作和类别与您在AndroidManifest.xml
中指定的匹配
Intent intent = new Intent()
.setAction(Intent.ACTION_VIEW)
.addCategory(Intent.CATEGORY_DEFAULT)
.addCategory(Intent.CATEGORY_BROWSABLE)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP)
.setPackage(getPackageName())
.setData(uri);
有 Activity
的启动模式
android:launchMode=["multiple" | "singleTop" |"singleTask" | "singleInstance"]
阅读有关启动模式的更多信息here
这可以放在 manifest
中的 Activity 标签中。
要获取意图数据,请尝试 onNewIntent()
我收到了带有自定义 Uri 方案的推送通知:myapp://main
在我的 onReceive
中,我创建了一个通知:
public void createNotification(Context context, String title, String message, String summary, Uri uri) {
Notification.Builder notification = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(message)
.setSmallIcon(R.drawable.ic_launcher)
.setDefaults(Notification.DEFAULT_LIGHTS)
.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && summary != null)
notification.setSubText(summary);
Intent intent = new Intent("android.intent.action.VIEW", uri);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
notification.setContentIntent(pendingIntent);
Notification noti;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
noti = notification.build();
else
noti = notification.getNotification();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, noti);
}
当我点击该通知时,它会打开一个新的 Activity,这是我的 MainActivity。但它似乎也创建了一个全新的过程,而不是仅仅打开我当前的 运行 应用程序。
我是否缺少一些标志?
您可以如下设置Intent,Intent动作和类别与您在AndroidManifest.xml
中指定的匹配 Intent intent = new Intent()
.setAction(Intent.ACTION_VIEW)
.addCategory(Intent.CATEGORY_DEFAULT)
.addCategory(Intent.CATEGORY_BROWSABLE)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP)
.setPackage(getPackageName())
.setData(uri);
有 Activity
的启动模式android:launchMode=["multiple" | "singleTop" |"singleTask" | "singleInstance"]
阅读有关启动模式的更多信息here
这可以放在 manifest
中的 Activity 标签中。
要获取意图数据,请尝试 onNewIntent()