2011-08-24 18:04

转载请注明出处:http://blog.csdn.net/awebkit

android浏览器插件的核心是一个动态库,由c++写成。这里实现了NPAPI的接口。以BrowserPlugin为例,分析如下

先看 jni/main.cpp 。

NP_Initialize:初始化NPP/NPN函数。对于每一种插件来说,该函数只会被调用一次,而且是最先被调用的函数。

这个函数比较重要。它是浏览器和插件进行交互的关键。他的功能主要有三个:
         1.得到浏览器定义的NPN_函数地址。
         2.将插件定义的NPP_函数地址返回给浏览器。
         3.得到Android提供的一些ANP_函数。
     在这里,第三个功能初始化了一些全局变量,如gLogI等。

NP_Shutdown: 最后一个被调用的函数。

NP_GetMIMEDescription:获取MIME的函数。该MIME需要和网页插件object标签里面的type对应。

NP_GetValue: 获取插件名字和描述。

下面是插件实例的函数。

NPP_New:创建一个插件实例。根据参数创建不同的插件实例。这里的参数有两个:1. 插件绘制模型:Bitmap 和 Surface。 2. 插件类型。

如下示例会创建一个Background插件,插件的绘制模型为Surface

[html]  view plain copy
  1. <object type="application/x-testbrowserplugin" id="sample">
  2. <param name="DrawingModel" value="Surface" />
  3. <param name="PluginType" value="Background" />
  4. </object>

这里需要注意的是,BrowserPlugin 使用一个对象  PluginObject 记录插件信息。主要是在一个apk里面包含多个插件的实现,共用了很多代码。

NPP_Destroy:销毁插件实例。

NPP_SetWindow:设置窗口相关。

NPP_NewStream:有数据到达。

NPP_DestroyStream:销毁数据流。

NPP_WriteReady:数据流可写的字节数

NPP_Write:往数据流中写数据

NPP_StreamAsFile:

NPP_Print:打印相关。

NPP_HandleEvent:事件相关。

NPP_URLNotify:

NPP_GetValue: 非常重要的函数。获取插件信息。需要处理NPPVpluginScriptableNPObject,对应js使用插件。

NPP_SetValue:

Android 浏览器插件开发-插件库相关推荐

  1. android浏览器插件开发,Android浏览器插件开发.docx

    Android浏览器插件开发 Android浏览器插件开发 需要了解的有以下几个方面的知识:1.插件是什么2.android浏览器怎样加载插件和创建实例3浏览器插件和脚本语言的交互4插件内部的数据流一 ...

  2. android 浏览器插件开发 - 插件库

    转载请注明出处:http://blog.csdn.net/awebkit android浏览器插件的核心是一个动态库,由c++写成.这里实现了NPAPI的接口.以BrowserPlugin为例,分析如 ...

  3. Android浏览器插件开发

    最近做android浏览器插件学到一些东西和大家分享: 需要了解的有以下几个方面的知识: 1.插件是什么 2.android浏览器怎样加载插件和创建实例 3浏览器插件和脚本语言的交互 4插件内部的数据 ...

  4. android浏览器插件开发,【转】Chrome扩展开发自己的浏览器插件

    本帖最后由 火菩萨 于 2017-6-25 03:24 编辑 不知道分类对不对 不对请管理大大移动一下 wKioL1fiEXCQ9nkKAAEZAaNTxUk841.jpg-wh_651x-s_429 ...

  5. Chrome插件-浏览器插件开发-插件安装-插件调试-概述

    文章目录 1.简述 2.弹出界面 3.背景界面 4.插件安装 5.调试 6.打包 7.作者答疑   现今浏览器可以实现大部分数据信息的展示,提供给读者进行浏览,开发浏览器插件,可以有效实现对获取的数据 ...

  6. Android 浏览器插件开发

    插件机制是任何一个应用都应该采取的机制,只不过看产品需求是否有用. http://www.cnblogs.com/hibraincol/archive/2011/08/23/2150629.html ...

  7. android浏览器插件介绍

    一 浏览器插件介绍:    1.1 概述 浏览插件本质是一个功能模块,是浏览器功能的一种扩充.其载体是dll或则so文件.它依附浏览器完成某一特定的功能.插件需要实现浏览器规定的一些函数,这些函数叫N ...

  8. android stuido 插件,3分钟教会你Android Studio插件开发!

    作者:在寻找雪见的景天 由于我英语很烂,写代码的时候需要用英文命名,有些单词不知道,就只能切换到浏览器打开网页搜索,再拿到英文单词.这样每次都要切换出去,很麻烦,于是,就想着开发一个Android s ...

  9. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

最新文章

  1. java更新blob字段的值_对一个BLOB字段如何用update 来更新?? (100分)
  2. 网络地址转换(PAT)
  3. 如何把 Word 中的表格快速插入 LaTeX?
  4. python标记跳转_Geany的跳转到标记定义“功能如何使用
  5. leetcode 210. Course Schedule II | 210. 课程表 II(Java)
  6. feign调用多个服务_Spring Cloud 快速入门系列之feign–微服务之间的调用
  7. 软件测试 学习之路 MYSQL安装
  8. 适用于SQL Server的DBATools PowerShell模块
  9. python 从列表中随机选择_使用条件Python从列表中随机选择
  10. python开发好吗_用Python开发应用好用吗?
  11. pc版本Line电脑多开软件,多开分身软件
  12. 130多个免费接口全部开放,涵盖天气数据、环境数据、旅游景点数据、位置数据、雷达、云图等等,可在线直接提供服务,免费的服务接口
  13. WPF 做的天干地支 乾坤八卦 罗盘
  14. 玩单片机需要学数电、模电吗?
  15. 层次分析法原理及应用案例
  16. 我的第一款(ban)产(cheng)品(pin)——铛铛打卡
  17. 股指期货、股指期权与股票有何不同?
  18. matlab级数求和阶乘,(阶乘)数列求和 - 数学 - 小木虫 - 学术 科研 互动社区
  19. 能真正帮你实现沟通表达能力提升的书籍推荐:《沟通与说服必读12篇》
  20. RTC业务中的视频编解码引擎构建

热门文章

  1. Mac FFmpeg编译和解决nasm/yasm not found or too old错误
  2. Linux下使用crontab定时重启java服务
  3. 齐次除法(透视除法)的意义
  4. TeamViewer之坑 不可恢复的错误
  5. 华为机试(python):模拟
  6. SpringBoot 整合 RocksDB
  7. Requests简明教程
  8. 巧用FillForm注册QQ账号(QQ邮箱注册,QQ账号注册)
  9. 【PHP】走进 PHP 第七课 Cookie Session
  10. webbench 下载_webbench 压力测试