本文实例讲述了Android使用WebView播放flash及判断是否安装flash插件的方法。分享给大家供大家参考。具体实现方法如下:

一、问题:

最近帮一个同学做一个项目,断断续续的一些知识点记录一下。一个页面中有一个WebView,用来播放swf,如果系统中未安装flash插件,必须提示用户到market中安装。

二、解决方法:

下面做一个demo,效果图如下:

图1:

图2:

图3:

首先布局文件,很简单:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/webview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_centerInParent="true" />

接着activity,得先检测系统中是否已经安装了adobe flash player插件,插件的packageName是com.adobe.flashplayer:

private boolean check() {

PackageManager pm = getPackageManager();

List infoList = pm

.getInstalledPackages(PackageManager.GET_SERVICES);

for (PackageInfo info : infoList) {

if ("com.adobe.flashplayer".equals(info.packageName)) {

return true;

}

}

return false;

}

如果未安装,则要做出提醒,为了提供良好的体验,我通过WebView加载一个简单的html文件来提醒,html文件放在assets下,如图一所示

Not install adobe flash player!

go market to install.

这个html文件中有一个链接,点击这个链接则会跳转到market中去下载,这就涉及到了在Javascript中调用Java本地方法,下面说如何调用,看上面链接的onclick中,它调用window.android对象的goMarket()方法,普通浏览器打开这个页面的,window.android是未定义的,则我们就需要在Java中构建这么一个对象,WebView有一个

addJavascriptInterface(Object obj, String interfaceName);

方法,第一个参数就是我们需要构建的绑定到javascript的那个对象,第二个参数就是在javascript中调用的名字,这儿就是android。

private void install() {

mWebView.addJavascriptInterface(new AndroidBridge(), "android");

mWebView.loadUrl("file:///android_asset/go_market.html");

}

我们所构建的对象如下:

private class AndroidBridge {

public void goMarket() {

handler.post(new Runnable() {

public void run() {

Intent installIntent = new Intent(

"android.intent.action.VIEW");

installIntent.setData(Uri

.parse("market://details?id=com.adobe.flashplayer"));

startActivity(installIntent);

}

});

}

}

javascript如果调用goMarket()方法,则进入的是专用于浏览器的特殊线程,如果涉及的UI更新,则要通过handler来操作。这样点击链接后会调用你手机中的market软件,如图二。安装之后就能播放flash了。有一个a.swf在assets下,如图三所示。

String url="file:///android_asset/a.swf";

mWebView.loadUrl(url);

当然一开始要对WebView进行一些设置:

WebSettings setting=mWebView.getSettings();

setting.setPluginState(PluginState.ON);

setting.setJavaScriptEnabled(true);

android4.0以上还得开启硬件加速,在manifest文件中,这个activity标签下加上如下属性:

android:hardwareAccelerated="true"

demo完整实例代码点击此处本站下载。

WebView播放flash,兼容问题还不少,我不太推荐使用。

希望本文所述对大家的Android程序设计有所帮助。

java手机端播放.swf_Android使用WebView播放flash的方法相关推荐

  1. H5与js实现手机端和pc端自适应播放器

    h5视频播放 实现效果 自适应实现 实现 实现效果 pc端 手机端 自适应实现 1.允许网页自动调整,在html文件的头部添加一行viewport元标签 <meta name="vie ...

  2. TP3.2.x判断手机端访问并设置默认访问模块的方法 - ThinkPHP框架

    手机端访问时调用Wap手机模块,实现在手机端访问时展示出手机网站,无需跳转域名 首先我们在./Application/Common/Conf/ 目录下建立两个公共配置文件:config.php 和co ...

  3. 手机端H5开发,屏幕不同尺寸适配方法(屏幕自适应)

    最近在接触手机端H5开发,然后设计师将设计图发给我们进行开发,对于第一次接触详细设计图开发的我来说,觉得很新颖毕竟一直没有接触这么正规的设计图(字体样式,颜色,大小等等),之后再开发的时候,就遇到了一 ...

  4. 手机端pdf文件预览pdf.js使用方法详解

    虽然H5页面可以通过A直接访问html 但可惜的是 手机端H5页面这样做就直接变下载了 那么想要实现手机端的pdf文件预览就需要用到pdf.js了 首先 我们访问地址 http://mozilla.g ...

  5. 织梦手机端跳转到index.html,两种方法实现织梦自带手机端搜索页直接跳转到search_m.htm手机站页面...

    这篇文章主要为大家详细介绍了两种方法实现织梦自带手机端搜索页直接跳转到search_m.htm手机站页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 用过织梦 ...

  6. 解锁安卓手机端无损flac音乐免费播放和下载

    之前给大家分享过两款解锁全网各大音乐app,无损资源免费下的pc端音乐播放神器: MusicTools 和 洛雪 是不是有的小伙伴已经把自己爱听的无损音乐下的盆满钵满了! 今天给安卓系统的小伙伴分享一 ...

  7. android 优酷 自动全屏播放,Android用Webview播放优酷视频全屏问题

    在播放优酷视频, 点击全屏的时候, 会黑屏, 而不显示需要全屏的view 试过各种方法, 发现有一些细节需要注意: 1. demo的Manifest Activity需要设置为: 全屏, 横屏 and ...

  8. android小米推送,Android手机端小米推送Demo解析和实现方法

    最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消 ...

  9. 解决手机端中文输入法中keyup不灵便的方法

    项目中有一处需求是,搜索框依据用户输入的值实时检索,一开始自然而然想到keyup,在拼音状态时,啥问题也没有,后来切换到中文输入法,问题出来了,不灵便了,后来在网上搜了下,找到了思路,主要是给搜索框注 ...

最新文章

  1. 序列内置方法详解(string/list/tuple)
  2. ORACLE 几个我忍了他很多年的问题
  3. python与数据思维基础目录_python入门知识思维路线图及环境配置
  4. 双十一:你收到了多少商家短信
  5. CVPR 2018 《High-speed Tracking with Multi-kernel Correlation Filters》论文笔记
  6. 使用WPF动画编程的几点注意事项[转]
  7. mysql独有的函数_数据库之MySQL函数(一)
  8. C语言这么难,为何大家都如飞蛾扑火般学习?现在带你揭秘
  9. Spark数据分析技术学习笔记(三)——Spark累加器
  10. 【python】多线程小结
  11. 如何用.NET编写ActiveX 控件
  12. 【源码分享】-c++界面源代码分享
  13. ora-00959(表空间不存在) 的另一种可能性
  14. arcgis制作分幅图层,并对分幅图进行编号
  15. Arch 安装 deb
  16. 富文本及编辑器的跨平台方案
  17. DOS批处理简明高级教程
  18. spring boot项目修改启动商标
  19. FILETIME to DateTime
  20. 迅为-iMX6ULL开发板上配置AP热点

热门文章

  1. C#弹窗提示输入密码
  2. python算法集合_python – 一个集合联合查找算法
  3. nstimer循环引用_NSTimer定时器进阶——详细介绍,循环引用分析与解决
  4. winform chart 添加数据报错_C# win Form开发 构造指定格式数据表字段值
  5. ICCV 2021 Workshop 盘点
  6. 最新:2021年度U.S.News美国大学排名发布,哈佛不是第一!
  7. ECCV2020 | 即插即用,涨点明显!FPT:特征金字塔Transformer
  8. QT子对话框中的变量如何相互调用
  9. 汇总|C++常见知识点总结,涉及文本输出、排序、生成随机数、异常处理、关联容器、printf重定向、sprintf用法、cout重定向
  10. Hi3516ampp编译错误之ls: cannot access '/hiwork/osdrvhi3516a.C02': No such file or directory