Android利用WebView开发browser中flash无法播放的问题

简介:

使用系统自带浏览器可以成功播放flash,可是利用自己开发的就无法播放。

代码如下:
browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setPluginsEnabled(true);
browser.getSettings().setAllowFileAccess(true);
browser.getSettings().setPluginsEnabled(true);
browser.getSettings().setPluginState(PluginState.ON);
// browser.getSettings().setPluginsPath("/data/data/" + getPackageName() + "/app_plugins/"); // 注意
browser.loadUrl(url);

flash无法加载最先想到的应该是没有安装最新Adobe flash player或者无法读取其plugin路径。
将Adobe flash player更新至最新发布支持Android 4.0的最新版(可到Google Play下载安装最新版),仍然无法解决问题。
会不会是无法读取plugin的路径,查找android developers中WebSettings对象的用法,发现有一个方法:setPluginsPath()可以设定plugin路径。
但是这个方法已经deprecated掉了。还有如下的解释:
This method is no longer used as plugins are loaded from their own APK via the system's package manager。
这样无法执行plugin要怎么样处理。
去网上找答案,发现有一个解决的办法。是因为Android 3.0以后,播放flash需要硬件加速,在AndroidManifest中的<Activity ..>下添加一句:
android:hardwareAccelerated="true"
可是我添加之后仍然无法播放。继续在网上找,发现另一个方法,是说加载的时候Adobe's Flash Player在WebView中创建了一个SurfaceView,
在SurfaceView显示和Flash加载之间有一个延迟,导致flash无法正常加载。作者还给出了解决问题的代码,网址如下:
http://stackoverflow.com/questions/5095977/screen-blinking-when-using-a-webview-with-flash
按照上面网址说的修改之后,仍然无法显示,流泪阿。。。。。。。。。
继续在网上查找,众说纷纭,还有种说法是硬件cpu架构非x86的无法播放,如果真是硬件问题那就彻底绝望了。
干脆自己写个最简单的网页显示,如果真不行也好尽快给老板汇报,意外的是,我自己写的竟然可以播放!!!!!!!!
信心回复,肯定是程式或者配置文件的问题。
将所有无关程式注释掉,照常无法显示。再将不明白的配置文件中的内容注释掉,找到原因!
在AndroidManifest中有一个<supports-screens>标签,其中有一项:
android:anyDensity="false"
一个和位图操作有关的设定,默认为true,建议不要设定,除非要直接操作位图。
至此,问题暂时解决,解决方法:
添加android:hardwareAccelerated="true"
去掉android:anyDensity="false"

相关文章
|
5月前
|
缓存 JavaScript 前端开发
Android WebView常见问题
本文主要介绍了在Android开发中WebView的使用方法,包括加载网址、设置相关属性(如JavaScript支持、缓存模式、屏幕适配等)、监听网页加载过程以及返回上一页面的功能实现。同时针对Android P版本限制明文流量的问题(ERR_CLEARTEXT_NOT_PERMITTED),提供了在`AndroidManifest.xml`中添加`android:usesCleartextTraffic=&quot;true&quot;`的解决办法。文章还附有完整代码示例,帮助开发者快速上手并解决常见问题。希望对您的开发工作有所帮助!
267 1
|
7月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
178 15
|
12月前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
180 2
|
12月前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
375 0
|
Android开发
Android 利用MediaPlayer实现音乐播放
本文提供了一个简单的Android MediaPlayer音乐播放示例,包括创建PlayerActivity、配置AndroidManifest.xml和activity_player.xml布局,以及实现播放和暂停功能的代码。
289 0
Android 利用MediaPlayer实现音乐播放
|
编解码 网络协议 开发工具
Android平台如何实现多路低延迟RTSP|RTMP播放?
本文档详细介绍了大牛直播SDK在Android平台上实现RTSP与RTMP流媒体播放及录像功能的技术细节。早在2015年,SDK的第一版就已经支持了多实例播放,并且通过简单的实例封装就能轻松实现。文档中提供了代码示例,展示了如何开启播放、停止播放以及开始和停止录像等功能。此外,SDK还提供了丰富的配置选项,例如设置录像目录、文件大小限制、转码选项等。总结部分列出了该SDK的关键特性,包括但不限于高稳定性和低延迟的播放能力、多实例支持、事件回调、硬解码支持、网络状态监控以及复杂的网络环境处理等。这些功能使得SDK能够应对各种应用场景,特别是在对延迟和稳定性有极高要求的情况下表现优异。
305 5
|
编解码 网络协议 vr&ar
Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流
这段内容讲述了VR头显中实现高分辨率视频播放的技术背景与实现方法,并强调了其重要性。高分辨率对于提升VR体验至关重要,它能提供更清晰的画面、增强沉浸感、补偿透镜放大效应,并维持宽广视场角下的图像质量。文中提到的大牛直播SDK具备极低的延迟(200-400ms),支持多种协议与格式,并具有丰富的功能特性,如多实例播放、事件回调、视频及音频格式支持等。此外,提供了基于Unity的播放器示例代码,展示了如何配置播放参数并开始播放。最后,作者指出此类技术在远程控制、虚拟仿真等应用场景中的重要意义。
148 3
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
316 0

热门文章

最新文章