From d7dad439287812f0bdd7635bc947a99e4948c973 Mon Sep 17 00:00:00 2001 From: Tlaster Date: Tue, 26 May 2020 16:58:31 +0800 Subject: [PATCH] Fix webview crashing in api 21 --- .../twidere/view/LollipopFixedWebView.kt | 28 +++++++++++++++++++ .../res/layout/activity_browser_sign_in.xml | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 twidere/src/main/kotlin/org/mariotaku/twidere/view/LollipopFixedWebView.kt diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/view/LollipopFixedWebView.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/view/LollipopFixedWebView.kt new file mode 100644 index 000000000..a4eb62c19 --- /dev/null +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/view/LollipopFixedWebView.kt @@ -0,0 +1,28 @@ +package org.mariotaku.twidere.view + +import android.annotation.TargetApi +import android.content.Context +import android.os.Build +import android.util.AttributeSet +import android.webkit.WebView + +private fun Context.fixForLollipop(): Context { + return if (Build.VERSION.SDK_INT in 21..22) { + applicationContext + } else this +} + +class LollipopFixWebView: WebView { + + constructor(context: Context?) : super(context?.fixForLollipop()) + constructor(context: Context?, attrs: AttributeSet?) : super(context?.fixForLollipop(), attrs) + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context?.fixForLollipop(), attrs, defStyleAttr) + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context?.fixForLollipop(), attrs, defStyleAttr, defStyleRes) + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, privateBrowsing: Boolean) : super(context?.fixForLollipop(), attrs, defStyleAttr, privateBrowsing) + + init { + isFocusable = true + isFocusableInTouchMode = true + } +} diff --git a/twidere/src/main/res/layout/activity_browser_sign_in.xml b/twidere/src/main/res/layout/activity_browser_sign_in.xml index 6e5cab499..11e3c0d29 100644 --- a/twidere/src/main/res/layout/activity_browser_sign_in.xml +++ b/twidere/src/main/res/layout/activity_browser_sign_in.xml @@ -23,7 +23,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> -