You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中ListView传YouTube视频ID播放失败问题求助

问题分析与解决方案

核心问题是你传递的videoId并非YouTube Player所需的纯视频ID字符串,而是完整的YouTube链接(比如示例中的youtube.com/watch?v=MIy070Di10U),直接传入loadVideo方法会导致识别失败,而写死的纯ID(如uuvFkS7LTUk)符合要求所以能正常播放。WebView加载嵌入链接失败也是同样原因。

解决步骤

1. 修正传递逻辑(优先方案)

在第一个Activity的ListView点击事件中,确保传递的是纯videoId(如MIy070Di10U),而非完整URL。如果数据源存储的是完整链接,先提取ID再传递:

// 第一个Activity中提取并传递videoId示例
String videoUrl = "youtube.com/watch?v=MIy070Di10U";
Uri uri = Uri.parse(videoUrl);
String pureVideoId = uri.getQueryParameter("v");

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("videoId", pureVideoId);
startActivity(intent);

2. 接收时兼容解析(若无法修改传递逻辑)

如果必须接收完整URL,可在第二个Activity中自动提取纯ID:

String videoId = ""; // 初始化默认值,避免空指针

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String videoData = extras.getString("videoId");
    if (videoData != null) {
        // 判断是否为完整URL,是则提取ID
        if (videoData.contains("youtube.com/watch?v=")) {
            Uri uri = Uri.parse(videoData);
            videoId = uri.getQueryParameter("v");
        } else {
            videoId = videoData;
        }
    }
}

3. 修正播放逻辑并判空

在onReady方法中,确保videoId非空再调用播放:

YouTubePlayerView youTubePlayerView = findViewById(R.id.youtube_player_view);
getLifecycle().addObserver(youTubePlayerView);
youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
    @Override
    public void onReady(@NonNull YouTubePlayer youTubePlayer) {
        if (!TextUtils.isEmpty(videoId)) {
            youTubePlayer.loadVideo(videoId, 0);
        } else {
            Log.e("YouTubePlayError", "无效的videoId");
        }
    }
});

4. WebView适配修正

WebView加载嵌入链接时,同样需要用纯ID拼接正确地址:

WebView webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
if (!TextUtils.isEmpty(videoId)) {
    String embedUrl = "https://www.youtube.com/embed/" + videoId;
    webView.loadUrl(embedUrl);
}

额外检查点

  • 确认两个Activity中传递的键名"videoId"完全一致,避免拼写错误;
  • 通过Log.d("VideoIdCheck", videoId)打印验证videoId内容,确保是纯ID无多余字符。

内容的提问来源于stack exchange,提问作者Diana adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:20:40