首页 > 解决方案 > 独立的透明活动在最近持有先前意图的人中显示

问题描述

我有一个处理 action.SEND 的 StandaloneActivity,它做了一些工作并完成。

<activity
        android:name=".StandaloneActivity"
        android:launchMode="singleInstance"
        android:theme="@style/Theme.Transparent">
        <intent-filter>
            <action android:name="android.intent.action.SEND" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>

它有透明的主题:

<style name="Theme.Transparent" parent="Theme.AppCompat">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

StandaloneActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    handleIntentExtras(intent)
}

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    handleIntentExtras(intent)
}
private fun handleIntentExtras(intent: Intent) {
// do some work and set extras to intent
//Calling setResult() as I start this activity from another activity with startActivityForResult() for another usecase.
    setResult(Activity.RESULT_OK, intent)
    finish()
}

预期的是,每当用户从另一个应用程序与我的应用程序共享某些内容时,用户不应离开当前应用程序,但 StandaloneActivity 应该能够完成工作并完成。StandaloneActivity(我的应用程序)不应保留在最近。

奇怪的是,上面的设置在 Java 版本的应用程序中按预期工作,但使用 Kotlin(从 Java 迁移到 Kotlin)StandaloneActivity(我的应用程序)在最近可见并且在打开它时,它正在处理以前的意图并完成。StandaloneActivity 仍然在最近。

标签: androidandroid-activitykotlin

解决方案


我试图用一个简单的演示应用程序重新创建相同的设置,在尝试了不同的启动模式和标志之后,我得到了解决方案。我必须从最近的活动中排除此活动,因此我在清单中的 StandaloneActivity 中添加了以下内容以及现有设置-

android:excludeFromRecents="true"

推荐阅读