Android浏览器插件开发

Android浏览器插件开发 需要了解的有以下几个方面的知识:1.插件是什么2.android浏览器怎样加载插件和创建实例3浏览器插件和脚本语言的交互4插件内部的数据流一 浏览器插件介绍: 1.1 概述浏览插件本质是一个功能模块,是浏览器功能的一种扩充。其载体是dll或则so文件。它依附浏览器完成某一特定的功能。插件需要实现浏览器规定的一些函数这些函数叫着NPAPI.正是插件实现了这些函数才可以和浏览器交互。同时浏览器也为插件提供一些函数。在android平台下还有一些专有的函数。他们的函数名字都有约定。插件提供的方法以NPP_打头。浏览器提供的方法是NPN_,android提供的函数是以ANP开头的。 插件作为一个共享库那么它什么时候被加载。有导出了什么接口让浏览器调用。 浏览器插件是被浏览器加载的。在android下也是被webkit加载。通常一个共享库被加载都是调用loadlibray函数,然后使用getentrypoint函数得到共享库导出函数的地址。同样插件也是这样被浏览器加载的。既然要调用loadlibrary函数那么我们必须知道共享库在系统中的位置。对于windows,mac,linux系统都可以存放在固定的位置。在linux下还可以通过设置环境变量来设定路径。但是在android系统下不是这样的。在1.5的时候有个固定的路径data/data/com.android.browser/plug-in.但是在2.0以后就没有存到这个路径。而是存放在插件APK包安装目录下的lib文件夹下。比如插件的包名是com.android.plugin,那么共享库的存储路径应该是data/data/com.android.plugin/lib/。对于各种插件路径不一样,那么浏览器是如何找到这些lib的路径,下面将详细介绍。1.2 android浏览器插件 对于android浏览器插件,是以apk包形式发布的。并且在该工程中我们有定义一个service。这个service可以响应PLUGIN_ACTION。这个是在AndroidMainefest.xml中设定的。而插件的注册也是通过service完成的。二、android浏览器加载插件 2.1 总述1.1中提到了浏览器加载插件是通过loadlibary方式加载。并且需要知道路径。其实浏览器加载插件总的分为三步:1.浏览器寻求插件路径,这个是通过插件apk包安装时运行的service来找到的。2.浏览器获取插件的信息。得到插件的名字,描述和MIME信息并保存到自己的plugindatabase类实例中。3.浏览器创建插件实例。这个过程创建插件实例,并对插件的内部数据初始化。下面详细描述这三个过程:2.2浏览器获取插件的路径。每次在浏览器启动刷新页面时,便会刷新自己的插件信息库即更新自己的pluginDatabase。然后PluginDataBase的函数refresh便会调用plugin manager的函数得到插件路径。而plugin manager通过pack manager找到所有能够响应PLUGIN-ACTION intent的service。然后通过每一个service信息得到包的名字就可以找到插件了。具体可以参考frameworks/base/core/java/android/webkit/ PluginManager.java。 图1描述了浏览器得到插件路径的流程。详细可以参考源码。路径:/frameworks/base/core/java/android/webkitexternal/webkit/WebCore/pluginsexternal/webkit/WebKit/android/jni 2.3 浏览器获取插件信息 得到插件路径后,我们可以得到插件导出的函数地址了,首先我们了解一下插件导出的函数和他们的功能。 图2显示了一个插件共享库导出的函数。下面详细说明每个函数的功能。 在浏览器调用refresh后将会调用NP_GetValue得到插件的名字和描述信息。然后调用NP_GetMIMEDescription得到插件的MIME类型、支持文件的扩展名和描述。将这些信息保存到pluginDatabase中。NP_Shutdown是在销毁pluginview时会调用,作用释放插件的资源。关于NP_Initialize函数是在创建插件实例时才会调用。具体过程如图3所示。? 在找不到MIMEType时浏览器会根据数据文件的扩展名来匹配插件。2.4浏览器创建插件实例:?NP_Initialize函数比较重要。它是浏览器和插件进行交互的关键。他的功能主要有三个:1.得到浏览器定义的NPN_函数地址。2.将插件定义的NPP_函数地址返回给浏览器3.得到Android

android浏览器插件开发,Android浏览器插件开发.docx相关推荐

  1. linux 浏览器源码下载,Android开发:图片浏览器源码

    Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...

  2. Tomcat双向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端超安全通信

    紧接着<Tomcat单向Https验证搭建,亲自实现与主流浏览器.Android/iOS移动客户端安全通信>,此处演示下更安全的双向Https认证的通信机制,为了清晰明了,以下进行单独描述 ...

  3. Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信

    众所周知,iOS9已经开始在联网方面默认强制使用Https替换原来的Http请求了,虽然Http和Https各有各的优势,但是总得来说,到了现在这个安全的信息时代,开发者已经离不开Https了. 网上 ...

  4. android利用WebView实现浏览器的封装

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容.中国 ...

  5. 使用浏览器查看Android SQLite数据库-Android Debug Database用法

    本文转载自[http://blog.csdn.net/o279642707/article/details/68946230] 前言 Android客户端查看sqlite数据库是很繁琐的事情,需要DD ...

  6. Android之实现夸克浏览器书签和历史页面滑动时候右上角图标切换效果

    1 需求 实现夸克浏览器书签和历史页面滑动时候右上角图标切换效果,页面滑动的时候,图标也左右滑动,但是只是显示其中的一个 https://www.captainai.net/st/ 2 代码实现 xm ...

  7. android手机评测,Android手机 三大浏览器对比评测

    随着Android系统的不断升温,国内的Android手机的销量已经出现井喷之势,作为智能手机,我们最常用的功能便是上网,也就是浏览网页,所以手机浏览器已经成为了Android智能手机的必备利器. 在 ...

  8. android 语音搜索动画,Android自定义控件实现UC浏览器语音搜索效果

    最近项目上要实现语音搜索功能,界面样式要模仿一下UC浏览器的样式,UC浏览器中有一个控件,会随着声音大小浮动,然后寻思偷个懒,百度一下,结果也没有找到类似的,只能自己动手了. 先上图看我实现的效果: ...

  9. qq 浏览器 android x86版,qq浏览器安卓版x86

    qq浏览器安卓版x86介绍 qq浏览器安卓版x86时钟追求的就是用户浏览体验.采用先进的内核架构,高速渲染引擎,完美的UI设计,带来极致体验. 手机QQ浏览器怎么修改UA标识?我们知道,用手机浏览网页 ...

最新文章

  1. SharePoint 2010中的客户端AJAX应用——ASP.NET AJAX模板
  2. XSLT - 利用template实现for循环
  3. 速计算机科学,计算机科学速成课30:万维网【视频】
  4. 初学Java开发,这9本书值得一看
  5. 跳转到_301跳转常见问题汇总
  6. 数据分析之如何制作数据埋点文档
  7. 使用shell脚本或命令行添加、删除 crontab 定时任务
  8. 我发现有的人就活该他赚钱,他们的脑子就是个聚宝盆
  9. Mycat实战之配置EP分片
  10. 版本帝Java 12 / JDK 12 正式发布,八大重大更新及部分代码示例
  11. Excel粘贴时如何跳过隐藏单元格
  12. ceshi wenz
  13. Android 获取外网IP地址
  14. CMD如何直接运行文件
  15. 用实际例子理解回调函数(Calback)
  16. 通过经纬度获取OpenstreetMap,谷歌地图,高德地图的切片
  17. 【转】七个受用一生的心理寓言
  18. 埃斯顿机器人 王杰高_产教融合进行时——南京埃斯顿集团王杰高博士一行来我校开展合作交流...
  19. 毕业设计 基于单片机的便携抽湿加湿器
  20. Oracle ora-12733 正则表达式太长 regexp_like(字段名,'||||||||||||||||||')

热门文章

  1. 一日之计在于晨,晨跑带来的不止是健康,还有乐观积极的人生态度
  2. 虚拟信用卡风控方案介绍
  3. XAMPP安装和配置(for mac)
  4. 【系统架构设计师】第一章:操作系统(1.2.2) 信号量与pv操作
  5. 眼动数据分析(基于EyeLink眼动仪数据)
  6. 使用阿里云的短信服务发送短信
  7. 关键词提取算法TextRank
  8. ajax技术优点和缺点,介绍Ajax技术
  9. 1168: 账单(指针专题,多实例)
  10. 理工男学计算机,案例分享 | 一名“理工男”的春天