#android #kotlin #chrome-custom-tabs #launchmode #trusted-web-activity
Вопрос:
Я хочу, чтобы CustomTWAActivity не закрывался и продолжал работать.
У меня есть основное действие, которое запускает TWA (Доверенное веб-действие, основанное на протоколе CCT). Я расширил средство запуска TWA пользовательским классом, чтобы переопределить его метод onNewIntent и выполнить некоторую работу.
Из основного действия я называю CustomTWAActivity следующим образом:
val intent = Intent(this, CustomTWAActivity::class.java)
val args = call.arguments as String?
if (args != null amp;amp; args.isNotEmpty()) {
intent.data = Uri.parse(args)
startActivity(intent)
isTWAOpen = true
}
TWA открывает веб-сайт, который затем, в свою очередь, запускает намерение chrome, полученное с помощью CustomTWAActivity. Фильтр намерений добавляется внутри действия в файле манифеста следующим образом:
<activity
android:launchMode="singleTask"
android:name=".CustomTWAActivity">
<!-- Edit android:value to change the url opened by the Trusted Web Activity -->
<meta-data
android:name="android.support.customtabs.trusted.DEFAULT_URL"
android:value="https://app.skillclash.com" />
<meta-data
android:name="android.support.customtabs.trusted.ADDITIONAL_TRUSTED_ORIGINS"
android:resource="@array/additional_trusted_origins" />
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="app.skillclash.com" />
</intent-filter>
</activity>
Я добавил режим запуска singleTask, чтобы он получал намерение в onNewIntent, а новое действие не создавалось в стеке.
Я получаю новое намерение внутри метода onNewIntent CustomTWAActivity, сначала выполняется задача, а затем TWA закрывается самостоятельно. Это означает, что метод CustomTWAActivity finished вызывается автоматически. И управление возвращается к основной активности
Вот как переопределяется onNewIntent:
class CustomTWAActivity: LauncherActivity() {
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
Log.i("intent in launcher", intent?.dataString?: "no intent data received")
if (intent != null) {
if (intent.action === Intent.ACTION_VIEW) {
val value = intent.dataString
TWAUtils.onNewIntentReceived(value)
}
}
}
}
Я хочу, чтобы CustomTWAActivity не закрывался и продолжал работать.