Автоклавы TWA для обжига хромированных деталей

#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 не закрывался и продолжал работать.