利用android tv获取视频链接

复制代码
MainActivity.java
复制代码
package com.example.tv1;

import android.os.Bundle;


import androidx.appcompat.app.AppCompatActivity;

import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;

import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;

import com.example.tv1.databinding.ActivityMainBinding;

public class MainActivity2 extends AppCompatActivity {

    private AppBarConfiguration appBarConfiguration;
    private ActivityMainBinding binding;
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);



        webView = new WebView(this);
        setContentView(webView);

        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36");


        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://wap.woaimoon.com/vod/59801-3-1.html");// 可以改为任意网页



        webView.setWebChromeClient(new WebChromeClient() {
            private View customView;
            private WebChromeClient.CustomViewCallback customViewCallback;

            @Override
            public void onShowCustomView(View view, CustomViewCallback callback) {
                // 进入全屏
                customView = view;
                customViewCallback = callback;

                // 添加 view 到全屏容器(如 FrameLayout)
                FrameLayout decor = (FrameLayout) getWindow().getDecorView();
                decor.addView(view, new FrameLayout.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.MATCH_PARENT));

                webView.setVisibility(View.GONE);
            }

            @Override
            public void onHideCustomView() {
                // 退出全屏
                FrameLayout decor = (FrameLayout) getWindow().getDecorView();
                decor.removeView(customView);
                customView = null;
                webView.setVisibility(View.VISIBLE);
                customViewCallback.onCustomViewHidden();
            }
        });

    }


    // 处理遥控器按键操作
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_DPAD_LEFT:
                sendJavaScript("moveFocus('left')");
                return true;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                sendJavaScript("moveFocus('right')");
                return true;
            case KeyEvent.KEYCODE_DPAD_UP:
                sendJavaScript("moveFocus('up')");
                return true;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                sendJavaScript("moveFocus('down')");
                return true;
            case KeyEvent.KEYCODE_DPAD_CENTER:
            case KeyEvent.KEYCODE_ENTER:
                sendJavaScript("pressEnter()");
                return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    // 向网页注入 JavaScript
    private void sendJavaScript(String script) {
        webView.evaluateJavascript(script, null);
    }


}
复制代码
activity_main2.xml
复制代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

查看logcat日志

2025-07-20 17:31:27.057 7957-7991 VideoCapture com.example.tv1 D 鎹曡幏鍒拌棰戝湴鍧�: https://jx.bbblx.com/player/index.php?code=dp\&if=1\&group=1\&time=1753003887\&keys=c7eadc1be69f3c1d1162a0963b3448b1\&from=ffm3u8\&id=59801\&sid=3\&nid=1\&name=大赢家-HD国语\&api=https://wap.woaimoon.com/index.php\&next=\&url=https://vip.ffzy-online2.com/20231022/45561_b5e8341c/index.m3u8

相关推荐
恋猫de小郭5 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab6 小时前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe11 小时前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农18 小时前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少19 小时前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker19 小时前
一杯美式搞定 Kotlin 空安全
android·kotlin
三少爷的鞋19 小时前
Android 协程时代,Handler 应该退休了吗?
android
火柴就是我1 天前
让我们实现一个更好看的内部阴影按钮
android·flutter
砖厂小工2 天前
用 GLM + OpenClaw 打造你的 AI PR Review Agent — 让龙虾帮你审代码
android·github
张拭心2 天前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能