Эх сурвалжийг харах

Shift WebView checks to necessary places only to allow for basic usage

arkon 4 жил өмнө
parent
commit
ccc0a61158

+ 0 - 5
app/src/main/AndroidManifest.xml

@@ -39,11 +39,6 @@
                 android:name="android.app.shortcuts"
                 android:resource="@xml/shortcuts" />
         </activity>
-        <activity
-            android:name=".ui.main.ForceCloseActivity"
-            android:clearTaskOnLaunch="true"
-            android:noHistory="true"
-            android:theme="@android:style/Theme.NoDisplay" />
         <activity
             android:name=".ui.main.DeepLinkActivity"
             android:launchMode="singleTask"

+ 0 - 10
app/src/main/java/eu/kanade/tachiyomi/App.kt

@@ -4,7 +4,6 @@ import android.app.Application
 import android.content.Context
 import android.content.res.Configuration
 import android.os.Build
-import android.widget.Toast
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleObserver
 import androidx.lifecycle.OnLifecycleEvent
@@ -12,11 +11,8 @@ import androidx.lifecycle.ProcessLifecycleOwner
 import androidx.multidex.MultiDex
 import eu.kanade.tachiyomi.data.notification.Notifications
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
-import eu.kanade.tachiyomi.ui.main.ForceCloseActivity
 import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
 import eu.kanade.tachiyomi.util.system.LocaleHelper
-import eu.kanade.tachiyomi.util.system.WebViewUtil
-import eu.kanade.tachiyomi.util.system.toast
 import java.security.Security
 import org.acra.ACRA
 import org.acra.annotation.AcraCore
@@ -52,12 +48,6 @@ open class App : Application(), LifecycleObserver {
         //     client.start()
         // }
 
-        // Enforce WebView availability
-        if (!WebViewUtil.supportsWebView(this)) {
-            toast(R.string.information_webview_required, Toast.LENGTH_LONG)
-            ForceCloseActivity.closeApp(this)
-        }
-
         // TLS 1.3 support for Android < 10
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
             Security.insertProviderAt(Conscrypt.newProvider(), 1)

+ 11 - 1
app/src/main/java/eu/kanade/tachiyomi/network/CloudflareInterceptor.kt

@@ -13,6 +13,8 @@ import androidx.webkit.WebViewClientCompat
 import androidx.webkit.WebViewFeature
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.online.HttpSource
+import eu.kanade.tachiyomi.util.lang.launchUI
+import eu.kanade.tachiyomi.util.system.WebViewUtil
 import eu.kanade.tachiyomi.util.system.isOutdated
 import eu.kanade.tachiyomi.util.system.setDefaultSettings
 import eu.kanade.tachiyomi.util.system.toast
@@ -43,9 +45,17 @@ class CloudflareInterceptor(private val context: Context) : Interceptor {
 
     @Synchronized
     override fun intercept(chain: Interceptor.Chain): Response {
+        val originalRequest = chain.request()
+
+        if (!WebViewUtil.supportsWebView(context)) {
+            launchUI {
+                context.toast(R.string.information_webview_required, Toast.LENGTH_LONG)
+            }
+            return chain.proceed(originalRequest)
+        }
+
         initWebView
 
-        val originalRequest = chain.request()
         val response = chain.proceed(originalRequest)
 
         // Check if Cloudflare anti-bot is on

+ 0 - 28
app/src/main/java/eu/kanade/tachiyomi/ui/main/ForceCloseActivity.kt

@@ -1,28 +0,0 @@
-package eu.kanade.tachiyomi.ui.main
-
-import android.content.Context
-import android.content.Intent
-import android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-
-/**
- * Activity that in conjunction with its configuration in the manifest allows for a way to
- * "force close" the application from the main [App] class.
- */
-class ForceCloseActivity : AppCompatActivity() {
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        finish()
-    }
-
-    companion object {
-        fun closeApp(context: Context) {
-            val intent = Intent(context, ForceCloseActivity::class.java).apply {
-                addCategory(Intent.CATEGORY_HOME)
-                addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
-            }
-            context.startActivity(intent)
-        }
-    }
-}

+ 9 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt

@@ -11,6 +11,7 @@ import android.view.MenuItem
 import android.webkit.WebChromeClient
 import android.webkit.WebResourceRequest
 import android.webkit.WebView
+import android.widget.Toast
 import androidx.core.graphics.ColorUtils
 import androidx.core.view.isInvisible
 import androidx.core.view.isVisible
@@ -21,7 +22,7 @@ import eu.kanade.tachiyomi.databinding.WebviewActivityBinding
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.source.online.HttpSource
 import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
-import eu.kanade.tachiyomi.ui.main.ForceCloseActivity
+import eu.kanade.tachiyomi.util.system.WebViewUtil
 import eu.kanade.tachiyomi.util.system.getResourceColor
 import eu.kanade.tachiyomi.util.system.openInBrowser
 import eu.kanade.tachiyomi.util.system.setDefaultSettings
@@ -42,12 +43,18 @@ class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
+        if (!WebViewUtil.supportsWebView(this)) {
+            toast(R.string.information_webview_required, Toast.LENGTH_LONG)
+            finish()
+        }
+
         try {
             binding = WebviewActivityBinding.inflate(layoutInflater)
             setContentView(binding.root)
         } catch (e: Exception) {
             // Potentially throws errors like "Error inflating class android.webkit.WebView"
-            ForceCloseActivity.closeApp(this)
+            toast(R.string.information_webview_required, Toast.LENGTH_LONG)
+            finish()
         }
 
         title = intent.extras?.getString(TITLE_KEY)