diff --git a/android-client/app/src/main/java/com/navi/client/MainActivity.kt b/android-client/app/src/main/java/com/navi/client/MainActivity.kt index 3f584cc..29dbb48 100644 --- a/android-client/app/src/main/java/com/navi/client/MainActivity.kt +++ b/android-client/app/src/main/java/com/navi/client/MainActivity.kt @@ -24,6 +24,7 @@ class MainActivity : AppCompatActivity() { private lateinit var webView: WebView + private var serverHost: String = "" private var fileChooserCallback: ValueCallback>? = null private var cameraImageUri: Uri? = null private var pendingFileChooserCallback: ValueCallback>? = null @@ -70,6 +71,7 @@ return } + serverHost = Uri.parse(serverUrl).host ?: "" setContentView(R.layout.activity_main) WebView.setWebContentsDebuggingEnabled(true) webView = findViewById(R.id.webview) @@ -87,10 +89,20 @@ mediaPlaybackRequiresUserGesture = false allowFileAccess = true allowContentAccess = true + userAgentString = "$userAgentString NaviAndroid/1.0" } webView.webViewClient = object : WebViewClient() { - override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest) = false + override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { + val host = request.url.host ?: return false + if (host == serverHost) return false + return try { + startActivity(Intent(Intent.ACTION_VIEW, request.url)) + true + } catch (e: Exception) { + false + } + } override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) { if (request.isForMainFrame) { diff --git a/webclient/src/composables/usePlatform.js b/webclient/src/composables/usePlatform.js new file mode 100644 index 0000000..784d967 --- /dev/null +++ b/webclient/src/composables/usePlatform.js @@ -0,0 +1 @@ +export const isAndroid = navigator.userAgent.includes('NaviAndroid')