在Android 11中无法通过taskAffinity使用Corss应用程序活动

问题描述

我有两个应用程序,即应用程序A和应用程序B,现在我想从应用程序A中启动应用程序B中的一个活动,该活动的启动模式为“单任务”。

订单: 活动X(App A)———>活动Y(App B)———>活动Z(应用B,launchMode =“ singleTask”)

作为认的AndroidManifest配置,任务管理器中将显示两个App,我希望用户只能在任务管理器中看到App A标签,因此当他们在任务之间切换时,不要单击AppB。Android11之前Android R),我使用下面的属性taskAffinity解决了这个问题。

活动X和活动Z都将其添加到AndroidManifet.xml

android:taskAffinity="com.abc.xxx”

因此,这些活动都可以包含在一项活动任务中。 在Android 10中,它可以正常工作。

但是,它在Android11中不再起作用。而且,我没有发现与此场景相关的任何新功能

如何使ApplicationA的活动任务容纳启动模式为singleTask的ApplicationB的活动?让用户在任务管理器中只能看到一个任务(ApplicationA)。

解决方法

不能。而且你不应该。它之前起作用的原因是<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote-bs3.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.min.css"> <div class="container"> <textarea name="summernote" id="summernote" cols="30" rows="10"> </textarea> </div> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>taskAffinity上胜过(覆盖)launchMode。显然,他们已经更改/修复了Android 11中的问题。

如果将Activity声明为singleTask,那么这将告诉Android Activity要成为其自身任务中的根Activity。启动此Activity时,应在一个新任务中启动它,而不是与Activity进行启动时处于同一任务中。

在早期版本的Android中,如果Activity与启动任务的根Activity具有相同的taskAffinity,则Activity将被启动到同一任务中。从来没有清楚地记录下来,因此也不清楚这是“ bug”还是“功能”。看来他们终于在Android 11中对此进行了更改/修复。

请参阅我对这些相关问题的回答: