mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Shift WebView checks to necessary places only to allow for basic usage
This commit is contained in:
		| @@ -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" | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user