1
0
Fork 0

Added working fix for crash issue

Ignore all null headers.
This commit is contained in:
nin0dev 2024-03-26 07:21:56 -04:00
parent 4ef866f860
commit 1818c44f17

View file

@ -2,11 +2,13 @@ package com.nin0dev.vendroid
import android.content.Intent import android.content.Intent
import android.graphics.Bitmap import android.graphics.Bitmap
import android.os.Build
import android.view.View import android.view.View
import android.webkit.WebResourceRequest import android.webkit.WebResourceRequest
import android.webkit.WebResourceResponse import android.webkit.WebResourceResponse
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.annotation.RequiresApi
import com.nin0dev.vendroid.Logger.e import com.nin0dev.vendroid.Logger.e
import java.io.IOException import java.io.IOException
import java.net.HttpURLConnection import java.net.HttpURLConnection
@ -33,11 +35,12 @@ class VWebviewClient : WebViewClient() {
super.onPageFinished(view, url) super.onPageFinished(view, url)
} }
@RequiresApi(Build.VERSION_CODES.N)
override fun shouldInterceptRequest(view: WebView, req: WebResourceRequest): WebResourceResponse? { override fun shouldInterceptRequest(view: WebView, req: WebResourceRequest): WebResourceResponse? {
val uri = req.url val uri = req.url
if (req.isForMainFrame || req.url.path!!.endsWith(".css")) { if (req.isForMainFrame || req.url.path!!.endsWith(".css")) {
try { try {
return null return doFetch(req)
} catch (ex: IOException) { } catch (ex: IOException) {
//e("Error during shouldInterceptRequest", ex) //e("Error during shouldInterceptRequest", ex)
} }
@ -45,24 +48,31 @@ class VWebviewClient : WebViewClient() {
return null return null
} }
@Throws(IOException::class) @RequiresApi(Build.VERSION_CODES.N)
private fun doFetch(req: WebResourceRequest): WebResourceResponse { private fun doFetch(req: WebResourceRequest): WebResourceResponse {
val url = req.url.toString() val url = req.url.toString()
val conn = URL(url).openConnection() as HttpURLConnection val conn = URL(url).openConnection() as HttpURLConnection
conn.setRequestMethod(req.method) conn.setRequestMethod(req.method)
for ((key, value) in req.requestHeaders) { for ((key, value) in req.requestHeaders) {
conn.setRequestProperty(key, value) conn.setRequestProperty(key, value)
}
val code = conn.getResponseCode()
val msg = conn.getResponseMessage()
val headers = conn.headerFields
val modifiedHeaders = HashMap<String, String>(headers.size)
for ((key, value) in headers) {
if (!"Content-Security-Policy".equals(key, ignoreCase = true)) {
modifiedHeaders[key] = value[0]
} }
val code = conn.getResponseCode()
val msg = conn.getResponseMessage()
val headers = conn.headerFields
val modifiedHeaders = HashMap<String, String>(headers.size)
for ((key, valueList) in headers) {
if (key == null) {
continue
}
if (!"Content-Security-Policy".equals(key, ignoreCase = true)) {
if (valueList != null && valueList.isNotEmpty()) {
val value = valueList[0]
modifiedHeaders[key] = value
}
}
}
if (url.endsWith(".css")) modifiedHeaders["Content-Type"] = "text/css"
val wong = modifiedHeaders.getOrDefault("Content-Type", "application/octet-stream")
return WebResourceResponse(wong, "utf-8", code, msg, modifiedHeaders, conn.inputStream)
} }
if (url.endsWith(".css")) modifiedHeaders["Content-Type"] = "text/css"
return WebResourceResponse(modifiedHeaders.getOrDefault("Content-Type", "application/octet-stream"), "utf-8", code, msg, modifiedHeaders, conn.inputStream)
}
} }