DetailsActivity.kt 2.87 KB
package com.apaas.bigscreem

import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.fragment.app.FragmentActivity


/**
 * Details activity class that loads [VideoDetailsFragment] class.
 */
class DetailsActivity : FragmentActivity() {

    private var mSelectedMovie: Movie? = null
    private val handler = Handler()
    private lateinit var mWebView: WebView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_details)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            window.setDecorFitsSystemWindows(false)
            window.insetsController?.let {
                it.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
                it.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
            }
        } else {
            @Suppress("DEPRECATION")
            window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_FULLSCREEN
                    or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
        }

        mSelectedMovie = intent.getSerializableExtra(MOVIE) as Movie
        if (mSelectedMovie != null) {
            mWebView = findViewById(R.id.webView)
            // 启用JavaScript

            mWebView.settings.javaScriptEnabled = true // 启用JavaScript

            mWebView.settings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36") // 设置用户代理为桌面浏览器的样子

            mWebView.webViewClient = WebViewClient() // 处理点击链接的方式

            // 设置WebChromeClient来处理JavaScript的对话框、网页标题等

            mSelectedMovie!!.webUrl?.let { mWebView.loadUrl(it) }
        }

        val refreshInterval = 43200000L
//        val refreshInterval = 5000L
        // 使用Handler定时刷新WebView
        handler.postDelayed(object : Runnable {
            override fun run() {
                mWebView.reload()
                // 递归调用自身实现定时刷新
                handler.postDelayed(this, refreshInterval)
            }
        }, refreshInterval)
    }

    companion object {
        const val SHARED_ELEMENT_NAME = "hero"
        const val MOVIE = "Movie"
    }

    override fun onDestroy() {
        super.onDestroy()
        // 清理资源,移除所有回调
        handler.removeCallbacksAndMessages(null)
    }
}