flutter - 将 Intent Web url 转换为 Android Intent

标签 flutter android-intent webview-flutter

我目前在我的应用程序中集成了一个 webview (webview_flutter: 2.0.4) 以进行支付流程。 不幸的是,在某些时候启动了以下网址:

intent://payment#Intent;action=ch.twint.action.TWINT_PAYMENT;scheme=twint;S.code=18223;S.startingOrigin=EXTERNAL_WEB_BROWSER;S.browser_fallback_url=;end

此 URL 应启动“twint”应用程序(瑞士支付解决方案) 不幸的是它不起作用,所以我试图重新创建相应的 android 意图 (android_intent: 2.0.0),但我不能。

任何人都可以帮助我或有其他解决方案吗?

我也尝试过使用 url_launcher 扩展,但我认为这不是正确的解决方案。

最佳答案

我不知道使用 flutter 时是否可以执行 native kotlin/java 代码,但这可以通过使用以下代码(取自 https://stackoverflow.com/a/35612860 )( native )解决:

override fun shouldOverrideUrlLoading(view: WebView?, url: String): Boolean {

        if (url.startsWith("intent://")) {
            val intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
            return if (intent.resolveActivity(context.packageManager) != null) {
                context.startActivity(intent)
                true
            } else {
                // handle error, e.g. open playstore
                true
            }
        }
        /* 
          Rest of override url handling
          ...
        */
    }

在 Android API 30+ 上 intent.resolveActivity 仅当您的 AndroidManifest.xml 中有以下条目时才会检测已安装的 twint 应用:

<queries>
    <intent>
        <action android:name="ch.twint.action.TWINT_PAYMENT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="twint" />
    </intent>
</queries>

关于flutter - 将 Intent Web url 转换为 Android Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67461868/

相关文章:

flutter - 本 map 片文件可以和webview_flutter一起使用吗?

flutter 升级后带有基本身份验证问题的 Dart HttpClient

flutter - 如何在 flutter 中使用反射访问下划线属性?

android - 如何在 Android 的设置菜单中添加新项目?

java - Android 方法 openFileOutput 出现 "open failed: ENOENT"错误

android - 如果当前 Activity 可以处理 NFC,则不显示 App Picker

flutter - 如何检测flutter webview中内部html何时发生变化

flutter - 在 flutter WebView 中关闭小米 MIUI 深色模式

flutter - 需要更新对象而不是添加

flutter - 如何在 Flutter 中添加多个相同类型的 ChangeNotifierProvider