diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt index 95b76550d..9d957b5d9 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt @@ -7,6 +7,8 @@ package it.niedermann.owncloud.notes.edit import android.annotation.SuppressLint +import android.content.ActivityNotFoundException +import android.content.Intent import android.net.http.SslError import android.os.Bundle import android.util.Log @@ -302,6 +304,28 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded { super.onReceivedSslError(view, handler, error) } } + + override fun shouldOverrideUrlLoading( + view: WebView?, + request: WebResourceRequest?, + ): Boolean { + val url = request?.url ?: return false + val scheme = url.scheme?.lowercase() + val accountUrl = runCatching { account.url }.getOrNull() + val staysOnServer = (scheme == "http" || scheme == "https") && + accountUrl != null && url.toString().startsWith(accountUrl) + if (!staysOnServer) { + try { + val intent = Intent(Intent.ACTION_VIEW, url).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + startActivity(intent) + } catch (e: ActivityNotFoundException) { + Log.w(TAG, "No app available to open $url", e) + } + } + return !staysOnServer + } } }