Added working fix for crash issue
Ignore all null headers.
This commit is contained in:
parent
4ef866f860
commit
1818c44f17
1 changed files with 29 additions and 19 deletions
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue