独立的透明活动在最近持有先前意图的人中显示

时间:2018-11-21 03:51:54

标签: android android-activity kotlin

我有一个StandaloneActivity来处理动作。SEND完成一些工作并完成。

<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仍是最新消息。

1 个答案:

答案 0 :(得分:0)

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

android:excludeFromRecents="true"