启动覆盖活动,而不显示应用程序的其余部分

我目前有一个应用程序组成的多个活动,其中之一是一个半透明的。 该应用程序有通知,当我点击它时,我希望它打开半透明的活动在任何目前在屏幕上。 到目前为止,如果我的应用程序已关闭,则可以使用,但如果正在运行,并且覆盖活动打开,则我的应用程序的其余部分也处于前台。 我想这样做,只有叠加在那里,一旦用户按回来,它会回到他们原来的应用程序。

这种模仿谷歌浏览器的标签活动。

我正在通过PendingIntent启动我的活动:

val intent = Intent(context, WebOverlayActivity::class.java) //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or PendingIntent.FLAG_ONE_SHOT) intent.putExtra(ARG_URL, ...) intent.action = System.currentTimeMillis().toString() //dummy action val bundle = ActivityOptionsCompat.makeCustomAnimation(context, R.anim.slide_in_right, R.anim.slide_out_right).toBundle() val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT, bundle) 

这些标志是我在其他地方开展活动时所拥有的标志,但是它们似乎并没有影响到这个待定的意图。 如上所述,这项活动是半透明的,并吸引了其他的活动。

我感觉这就涉及到将这个活动与其他应用程序任务分开,但是我也在应用程序中使用了叠加层,我不确定这是否会影响到任何内容。

有任何想法吗?

编辑1:这是活动清单

 <activity android:name=".WebOverlayActivity" android:theme="@style/AppTheme.Overlay"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!--other data sources--> </intent-filter> </activity> 

我终于找到了一个可行的解决方案。 目标是在新任务中启动活动,所以我在活动清单中添加了android:launchMode="singleInstance" 。 什么搞砸了,我还需要指定一个taskAffinity ,否则launchMode将被忽略。

我现在可以有效地使用覆盖来加载其他应用程序中的网址,并回到它,或从我自己的应用程序中使用它,并像其他任何活动一样。