安卓3.0.1中WebView无法显示Flash视频

33

我有一个简单的WebView用于显示带Flash的网站(Adobe Flash网站)- 在运行Android 3.0.1的Xoom平板电脑上进行测试,使用新发布的Flash 10.2

在参考stackoverflow上的每个问题之后,我设置了以下内容:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.loadUrl("http://www.adobe.com/software/flash/about/");
使用getSettings()启用了WebView的插件(Plugins)JavaScript,但无法显示Flash。当我将setPluginState设置为ON_DEMAND时,它会显示Flash的正确占位符,但是当我点击应该有Flash的位置时,Flash会消失(就好像Flash视频无法渲染)并且只能听到音频(根据Flash内容而定)。
我还注意到,我可以轻触缺少Flash的位置,长按一下,然后轻触左上角应该有全屏(Fullscreen)按钮的位置,然后它将以全屏模式正确显示。但当我回到WebView时,它仍无法显示,只播放音频。
感谢任何帮助!请不要只是把我引用几个月前发布的东西而没有解释为什么我在Android 3.0发布前引用了一个帖子的细节!再次感谢所有帮助。很棒的社区!

我也很想知道这个问题的答案。我在Android中创建了一个应用程序,将Web视图渲染到LiveWallpaper对象的背景中,并获得了完全相同的行为(除了点击+全屏,因为我只能绘制画布而不能附加视图)。无论如何,我只是想分享这一点,让你知道这不仅仅是你的问题,同时感谢您发布这篇文章,因为它让我知道这也不是我做错了什么! 编辑我的应用程序在Android 2.1 emu和2.2实际设备htc desire上都有这种行为。 - user562566
4个回答

35

经过一周半的搜索和尝试不同的技术,我几乎已经快把我的平板电脑扔出窗户了,但最终我解决了问题——解决方法非常简单,这让我感到有些高兴。不过话说回来,也许这就是解决问题的方式吧!

请记住,这是针对我的Xoom Android 3.0.1平板电脑中WebView无法加载Flash视频的问题。

步骤1:只需在应用程序清单XML下的<application>标签中添加以下内容:

android:hardwareAccelerated="true"

步骤2:加载您的应用程序并享受支持Flash的WebView!

祝你好运!


我有完全相同的症状 - 包括长按并点击左上角以显示视频。但是,硬件加速修复对我不起作用。摩托罗拉Xyboard。 - Dave Carlile
1
我通过将“hardwareAccelerated”从清单标签移动到活动标签中,成功使其工作。 - Dave Carlile
它适用于Android 4(ICS),至少需要将该属性添加到“activity”标签中。 - mdelolmo
对ICS来说运行良好。至少我使用时流畅无阻。当我发现它是如此简单易用时,我和你(Xezuka)感受相同。 - denizt
@Xezuka,有些ICS平板电脑的Webview只加载了一半而非整个屏幕。请帮帮我。 - saravanan
AVD Android 4.2.2 上无法工作。有没有解决方案的人可以给出确切的细节:SDK 版本、AVD 细节、代码示例。谢谢。 - Mitja Gustin

4
webView.setWebChromeClient(new WebChromeClient());

我不知道为什么,但这个对我有帮助。


3

我曾经遇到过同样的问题,只能在WebView中听到音频并看到黑屏。我正在使用Motorola Xoom上的Android 3.2。

在寻找解决方案时,最终我已经能够在我的应用程序中正确播放视频。

解决方案: 我创建了另一个Android项目,其中包含单个Activity,其中包含WebView,并设置了上述技巧(即android:hardwareAccelerated =“true”等)。令人惊讶的是,我能够在此项目中完美地播放视频!

奇怪的是,我无法在我的应用程序项目中使用相同的源代码播放它。不管怎样,它对我有用,不知道为什么!


1

从API文档这里

在您的Android清单文件中,将以下属性添加到<application>标记中,以启用整个应用程序的硬件加速:

<application android:hardwareAccelerated="true" ...>

要在活动级别上启用或禁用硬件加速,您可以使用<activity>元素的android:hardwareAccelerated属性。

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接