启动叠加活动而不显示应用程序的其余部分

问题描述:

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

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

我目前推出我的活动通过的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> 
+0

我在问题中添加了我的活动清单 –

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

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