Android webview无法渲染通过iframe嵌入的youtube视频

2024-03-19

这是关于在 Web 视图中使用最新的嵌入格式(iframe)加载 YouTube 视频。

iframe 嵌入格式示例

<iframe width="637" height="358" src="http://www.youtube.com/embed/olC42gO-Ln4?fs=1&amp;feature=oembed" frameborder="0" allowfullscreen=""></iframe>

在 Android 2.3.3 和 3.2 设备(HTC Desire 和 Asus Transformer)上测试代码,网页视图只会显示一个黑色矩形。

我尝试了来自 vimeo 的类似嵌入

<iframe src="http://player.vimeo.com/video/35693267" width="640" height="360" frameborder="0"></iframe>

2.3中,视频正常播放
3.2中,一个黑色矩形一闪就消失了,iframe区域一片空白。

最后,如果使用旧的嵌入格式(使用对象标签),视频将在 2.3.3 和 3.2 中的 webview 中正确显示。

我检查了相关问题并添加了

android:hardwareAccelerated="true"

在应用程序和/或活动标签中,但在 2.3 和 3.2 设备中仍然没有视频。

这是一个大问题,因为现在越来越多的网站使用最新的格式(iframe)来嵌入 YouTube 视频。 Android/Youtube 团队,请看一下这个问题。


如果您想在您的电脑上播放视频WebView您需要使用基本 URL 加载数据!

DONT做这个:

mContentWebView.loadDataWithBaseURL(null, webViewContentString,
            "text/html", "UTF-8", null);

改为这样做:

    //veryVeryVery important for playing the videos!
    mContentWebView.loadDataWithBaseURL(theBaseUrl, webViewConentString,
            "text/html", "UTF-8", null);

基本 URL 将类似于您在您的页面中显示的内容的“原始”URLWebView。假设您正在开发一个新闻阅读器WebView's基本 url 将是原始故事的 url。

祝你好运!

还记得设置你的 WebView...像这样...

    mContentWebView.setWebChromeClient(new WebChromeClient());
    mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
    mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
    mContentWebView.setWebViewClient(new WebViewClient());
    mContentWebView.getSettings().setJavaScriptEnabled(true);

您需要在清单中打开硬件加速(仅适用于 SDK 14 及更高版本)。

前任。硬件加速开启:

<application
    android:name="com.example.app"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:hardwareAccelerated="true">
<!-- hardwareAccelerated requires SDK 14 -->
...
</application>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android webview无法渲染通过iframe嵌入的youtube视频 的相关文章

  • 图钉的 OnClickListener

    在这里我使用了谷歌地图和叠加层 我使用了图钉图像来指向 GeoPoint 我想设置一个OnClickListener图钉事件 当用户触摸 pin 时 我想吐槽一条消息 下面是代码 import java util List import c
  • 如何删除导航视图不必要的顶部填充?

    标题和图中显示的第一个项目之间有不必要的顶部填充 如何将其去除 你可以在这里找到源代码 https github com chrisbanes cheesesquare https github com chrisbanes cheeses
  • RxAndroid - 单击时重试可观察

    我在 Android 应用程序中使用 rxAndroid 和 rxKotlin 来异步处理网络请求 现在我想仅在单击 Snackbar 按钮后重试失败的网络请求 我现在的代码 val citiesService ApiFactory cit
  • adb 服务器版本 (40) 与此客户端 (41) 不匹配;杀戮[重复]

    这个问题在这里已经有答案了 无法在 Android 上启动项目 adb server version 40 doesn t match this client 41 killing could not read OK from ADB Se
  • kotlin中的三元运算符[重复]

    这个问题在这里已经有答案了 我可以用java写 int i 10 String s i 10 Ten Empty 即使我可以将它传递到方法参数中 callSomeMethod i 10 Ten Empty 如何将其转换为 kotlin 在
  • 在通知声音中暂停/恢复媒体播放器

    很容易检测到电话何时打入 通过phoneStateListener 但是其他通知声音 例如电子邮件或短信 又如何呢 在某些设备上 这些通知听起来很静音 但不会暂停任何当前正在运行的 mediaPlayer 实例 这对用户来说很烦人 理想情况
  • 如何在android中直接从.zip文件读取文件而不解压它

    过去几个月我一直在研究 android 现在我的问题是读取放在 sdcard 上的 zip 文件 我已经成功完成了将 zip 文件下载到 SD 卡上的编码 我已将 img zip 文件下载到 SD 卡上 此 img zip 包含 5 个图像
  • 在 Android 中使用 Facebook Achievement API

    我知道这可能看起来像一个通用问题 但找到有关该主题的信息似乎非常困难 因此 如果某个地方存在完整的示例 指南 源代码链接 我将不胜感激 我正在开发一款 Android 游戏 希望集成 Facebook 成就 我想要的只是在用户完成某个谜题时
  • 修改 Settings.apk 以与 Project Glass 配合使用

    我正在尝试构建要在 Google I O 的 Hacking Glass 会议上在 Glass 上使用的 Settings apk 他提到 为了让设置 apk 正常工作 需要修改清单中的一行 这是 AOSP 清单 http pastebin
  • 如何更改所有 ListView 的默认分隔线颜色

    我正在尝试为 style xml 中的所有 listView 应用默认样式 请注意 在某些地方我使用嵌套列表视图 In 样式 xml
  • 我如何将值从基本适配器传递到活动

    我正在一个应用程序中工作 我需要将值从基本适配器类传递到活动 这是片段代码 public View getView int position View convertView ViewGroup parent vi convertView
  • 使用Web蓝牙API时找不到移动设备

    我正在学习 Web 蓝牙 API 使用 google 开发控制台 我无法找到我的移动设备 还尝试了 github 上提供的演示 https github com WebBluetoothCG demos https github com W
  • 如何防止机器人程序和垃圾邮件 API 请求?

    我正在使用react native 开发一个Android 应用程序 该应用程序与我正在为该应用程序开发的API 进行通信 该 API 是使用 Laravel 和 Laravel Passport 构建的 我知道 Android 应用程序可
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • MaterialDatePicker 错误:要在应用程序主题中设置materialCalendarFullscreenTheme 属性

    我做了什么 Added implementation com google android material material 1 1 0 在依赖关系中 Set Theme MaterialComponents Light Bridge作为
  • MediaPlayer.getDuration() 返回错误的持续时间

    媒体播放器的getDuration 方法为我提供了某些音频文件的错误值 我认为所有这些文件的共同特征是它们是使用 Audacity 或其他一些音频编辑工具进行操作的 当尝试将 MediaPlayer 进度绑定到进度栏时 这是一个问题 我继续
  • 如何管理循环器和线程(线程不再消亡!)

    我创建了一个扩展 Thread 的类 以通过非 ui 线程中的 LocationManager 检索用户位置 我将其实现为一个线程 因为它必须根据请求启动并仅在有限的时间内完成其工作 顺便说一句 我必须在线程中添加一个 Looper 对象
  • proguard 不会删除日志

    In proguard rules pro 我有以下配置 assumenosideeffects class android util Log public static boolean isLoggable java lang Strin
  • Android Studio同时为同一个项目构建两个应用程序

    我正在使用 Android Studio v0 5 9 制作一个应用程序 它有一个图书馆项目作为依赖 但是 每次我运行该项目时 都会将两个具有相同名称和图标的 APK 部署到我的设备上 第一个 apk app 包含我的主模块 而第二个是库项
  • 改造中的 SocketTimeoutException

    我在尝试着POST向服务器请求获取数据但有时会发生SocketTimeoutException I used Ok3Client解决它 但我面临同样的异常 我该如何解决它 我的代码如下 public void getNormalLogin

随机推荐