Android浏览器插件开发(二)
2010-05-31 14:09:00 来源:WEB开发网在写Android的browser plugin的时候,需要实现一系列的NPP函数,关于函数的具体说明还是推荐看一看这个网页:https://developer.mozilla.org/en/Gecko_Plugin_API_Reference
下面说一说在这些函数中需要完成的任务
//===================================
NPError NP_Initialize(NPNetscapeFuncs*,
NPPluginFuncs*,
JNIEnv *java_environment,
jobject application_context);
Plugin初始化函数,浏览器会通过参数传进一个浏览器侧的NPAPI函数列表(NPN函数列表),plugin需要在这里实现全局参数的初始化,并返回plugin侧的NPAPI函数列表(NPP函数列表)。Android的Plugin可以通过NPN_GetValue获取浏览器参数以及 Android提供的各种操作接口(ANP Inerface),Android提供的操作接口可以查看源代码的这一部分:external/webkit/WebKit/android /plugins。Android的NP_Initialize还提供了上层的java运行环境,可用于实现与java侧的交互。
//===================================
void NP_Shutdown();
关闭Plugin,浏览器在销毁了所有plugin实例以后就会调用这个函数,可以在这里释放一些全局的资源。
//===================================
NPError NPP_New(NPMIMEType pluginType,
NPP instance, uint16 mode,
int16 argc, char *argn[],
char *argv[], NPSavedData *saved);
新建一个实例,浏览器每创建一个plugin的实例就会调用一次这个函数。在这里主要就是根据传进的参数列表进行实例的初始化,建立新的Plugin对象,并通过NPN_SetValue告知浏览器plugin对象的一些特性,其中包括了plugin对象能处理的事件(触控事件和按键事件),以及 plugin的渲染模式(bitmap模式或surface模式)。
//===================================
NPError NPP_Destroy(NPP instance,
NPSavedData** save);
当浏览器需要销毁一个plugin实例的时候调用,要在这里完成这对应实例的资源释放。
//===================================
NPError NP_GetValue(NPP instance,
NPPVariable variable,
void *ret_value);
浏览器通过此函数获取plugin的一些全局参数,主要是plugin的名称和描述。
更多精彩
赞助商链接