Denis
Denis

Reputation: 11

Android 4.4.4 (KitKat) webview videos is not working

I have an old TV running Android 4.4.4, and I created a simple app using WebView to render YouTube specifically for the TV. The app loads the YouTube TV page (https://www.youtube.com/tv) fine, but videos don't play—they just show a gray poster image. Sometimes the app even crashes when trying to play a video.

I built this app because the regular browser doesn't support fullscreen properly, and I wanted a cleaner experience directly in an app.

package com.example.youtubetv_staging

import android.annotation.SuppressLint
import android.graphics.Color
import android.os.Bundle
import android.util.Log
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {

    @SuppressLint("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val webView = findViewById<WebView>(R.id.webview)

        val webSettings = webView.settings

        webSettings.javaScriptEnabled = true
        webSettings.domStorageEnabled = true
        webSettings.setSupportZoom(false)
        webSettings.builtInZoomControls = false
        webSettings.displayZoomControls = false
        webSettings.allowFileAccess = true
        webSettings.allowContentAccess = true
        webSettings.cacheMode = WebSettings.LOAD_NO_CACHE
        webView.webChromeClient = WebChromeClient()
        webView.setBackgroundColor(Color.TRANSPARENT)

        webSettings.mediaPlaybackRequiresUserGesture = false

        webView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null)

        webView.webViewClient = object : WebViewClient() {
            override fun onReceivedError(view: WebView, request: WebResourceRequest, error: android.webkit.WebResourceError) {
                super.onReceivedError(view, request, error)
                Log.e("WebView", "Error loading page")
            }
        }

        webView.webChromeClient = WebChromeClient()

        webView.loadUrl("https://www.youtube.com/tv")
    }
}

Upvotes: 1

Views: 66

Answers (0)

Related Questions