У меня есть 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 (мойapp) виден в последних статьях и при его открытии обрабатывает предыдущее намерение и завершает работу.StandaloneActivity остается в центре внимания.