Android 完成所有打开的活动并从BroadcastReceiver启动新活动

Android 完成所有打开的活动并从BroadcastReceiver启动新活动,android,android-intent,broadcastreceiver,affinity,Android,Android Intent,Broadcastreceiver,Affinity,我写了一个BroadcastReceiver,负责根据条件启动不同的应用程序活动。现在有可能应用程序已经打开了 在这种情况下,如何关闭所有打开的活动并从接收方启动一个新的活动 这里有什么建议吗 下面的代码片段对我来说很有用,它将显示带有所需消息的通知面板,并点击启动屏幕。现在,启动屏幕实际上不是显示屏幕,而是引导应用程序显示前端活动的屏幕 private void showNotification(Context context, String message, int userId) {

我写了一个BroadcastReceiver,负责根据条件启动不同的应用程序活动。现在有可能应用程序已经打开了

在这种情况下,如何关闭所有打开的活动并从接收方启动一个新的活动


这里有什么建议吗

下面的代码片段对我来说很有用,它将显示带有所需消息的通知面板,并点击启动屏幕。现在,启动屏幕实际上不是显示屏幕,而是引导应用程序显示前端活动的屏幕

private void showNotification(Context context, String message, int userId) {

        // Here it play tricky part. Since Splash is the Activity which never show. It just guide which Activity should show next.
        Intent intent = intent = new Intent(context, Splash.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        PendingIntent contentIntent = PendingIntent.getActivity(context, userId, intent , 0);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_launcher).setContentTitle("Alarm").setContentText(message);
        mBuilder.setContentIntent(contentIntent);
        mBuilder.setDefaults(Notification.DEFAULT_SOUND);
        mBuilder.setAutoCancel(true);
        NotificationManager mNotificationManager =
                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);       
        mNotificationManager.notify(userId, mBuilder.build());      
    }

从启动前的初始屏幕启动所需的前端活动,只需调用
finishafinity()
,它将清除所有后台活动。

您想关闭来自不同应用程序的活动吗?不……只想关闭同一应用程序打开的活动。并启动从接收器请求的新接收器。在所有活动中实现广播接收器,并为所有活动设置公共过滤器关闭。我已经在一个项目中实现了,在这个项目中,我必须注销关闭所有活动的应用程序。这并不比重复代码更可取。我已经编写了单独的Receiver类来处理应用程序的事件…还有其他建议吗!另一个应用程序是你写的吗?你能修改一下吗?发布用于启动另一个应用程序的代码,并发布另一个应用程序的清单。在这里,我编写了一个透明的启动屏幕。这会根据If-else条件启动我们想要启动的任何程序。您只需在启动新活动之前致电即可。