Skip to content
Snippets Groups Projects
Commit 68657c08 authored by Diego Fernando Nieto's avatar Diego Fernando Nieto Committed by Nicolas Pomepuy
Browse files

License: Android TV license page based on about_licence xml

Inject CSS to dark mode in Android TV

(cherry picked from commit 66560b94)
parent 62beb998
No related branches found
No related tags found
1 merge request!618License: update year and webview fix
package org.videolan.television.ui
import android.annotation.SuppressLint
import android.content.res.Configuration
import android.graphics.Color
import android.os.Bundle
import android.view.View
import android.util.Base64
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.fragment.app.FragmentActivity
......@@ -16,15 +14,18 @@ class LicenceActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val revision = getString(R.string.build_revision)
val licence = WebView(this)
setContentView(org.videolan.television.R.layout.about_licence)
licence.loadUrl("file:///android_asset/licence.htm")
val webView = findViewById<WebView>(R.id.webview)
val revision = getString(R.string.build_revision)
webView.loadUrl("file:///android_asset/licence.htm")
licence.webViewClient = object : WebViewClient() {
webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
if (url.startsWith("file:///android_asset")) {
// Inject CSS when page is done loading
injectCSS(view, "licence_dark.css")
injectCommitRevision(view, revision)
}
super.onPageFinished(view, url)
......@@ -32,11 +33,31 @@ class LicenceActivity : FragmentActivity() {
}
}
setContentView(licence)
(licence.parent as View).setBackgroundColor(Color.LTGRAY)
applyOverscanMargin(this)
}
@SuppressLint("SetJavaScriptEnabled")
private fun injectCSS(webView: WebView, cssAsset: String) {
try {
webView.settings.javaScriptEnabled = true
val buffer = Util.readAsset(cssAsset, "")
val encoded = Base64.encodeToString(buffer.toByteArray(), Base64.NO_WRAP)
webView.loadUrl("javascript:(function() {" +
"var parent = document.getElementsByTagName('head').item(0);" +
"var style = document.createElement('style');" +
"style.type = 'text/css';" +
// Tell the browser to BASE64-decode the string into your script !!!
"style.innerHTML = window.atob('" + encoded + "');" +
"parent.appendChild(style);" +
"})()")
webView.settings.javaScriptEnabled = false
} catch (e: Exception) {
e.printStackTrace()
}
}
@SuppressLint("SetJavaScriptEnabled")
private fun injectCommitRevision(webView: WebView, revision: String) {
try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment