This is the 4th or 5th time today that you've asked about this... On Wed, Jun 10, 2009 at 9:30 PM, MIND GAME <lovekhanna04...@gmail.com>wrote:
> > i am trying to load a npapi plugin using android api - webview. > code is > webview.getSettings().setJavaScriptEnabled(true); > webview .getSettings().setPluginsEnabled(true); > webview.getSettings().setPluginsPath("/android_asset/web/"); > System.out.println("Default plugin path > is :"+webview .getSettings().getPluginsPath()); > webview.loadUrl("file:///android_asset/web/test.html"); > > i m using simple example npapi plugin. > > code for plugin is given below and i place this plugin inside my > application's asset folder. and set pulgin path like this -- > webview.getSettings().setPluginsPath > ("/android_asset/web/"); > > but plugin is failing to load... > > #include <stdio.h> > #include <string.h> > #if defined(OS_Darwin) > #include <Webkit/npapi.h> > #include <WebKit/npfunctions.h> > #include <WebKit/npruntime.h> > #define OSCALL > #endif > #if XULRUNNER_SDK > #include <npapi.h> > #include <npupp.h> > #include <npruntime.h> > #elif _WINDOWS /* WebKit SDK on Windows */ > #ifndef PLATFORM > #define PLATFORM(x) defined(x) > #endif > #include <npfunctions.h> > #ifndef OSCALL > #define OSCALL WINAPI > #endif > #endif > char** charArray = NULL; > static NPObject *so = NULL; > static NPNetscapeFuncs *npnfuncs = NULL; > /* NPN */ > static void logmsg(const char *msg) { > #ifndef _WINDOWS > fputs(msg, stderr); > #else > static FILE *out = fopen("\\npsimple.log", "a"); > fputs(msg, out); > fclose(out); > #endif > } > > static bool > hasMethod(NPObject* obj, NPIdentifier methodName) { > logmsg("npsimple: hasMethod\n"); > return true; > } > > static bool > invokeDefault(NPObject *obj, const NPVariant *args, uint32_t > argCount, > NPVariant *result) { > logmsg("npsimple: invokeDefault\n"); > result->type = NPVariantType_Int32; > result->value.intValue = 42; > return true; > } > > static bool > invoke(NPObject* obj, NPIdentifier methodName, const NPVariant *args, > uint32_t argCount, NPVariant *result) { > logmsg("npsimple: invoke\n"); > invokeDefault(obj,args,argCount,result); > return true; > } > > static bool > hasProperty(NPObject *obj, NPIdentifier propertyName) { > logmsg("npsimple: hasProperty\n"); > return false; > } > > static bool > getProperty(NPObject *obj, NPIdentifier propertyName, NPVariant > *result) { > logmsg("npsimple: getProperty\n"); > return false; > } > > static bool enumerate(NPObject *npobj, NPIdentifier **value, > uint32_t *count){ > } > > static NPObject* allocate(NPP npp,NPClass* theClass){ > logmsg("IN ALLOCATE\n"); > NPObject* npObj = (NPObject*)malloc(sizeof(NPObject)); > return npObj; > } > > static void deallocate(NPObject* obj){ > logmsg("IN DEALLOCATE\n"); > free(obj); > } > > static NPClass npcRefObject = { > NP_CLASS_STRUCT_VERSION, > allocate, > deallocate, > NULL, > hasMethod, > invoke, > invokeDefault, > hasProperty, > getProperty, > NULL, > NULL,enumerate, > }; > > /* NPP */ > static NPError > nevv(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, > char *argn[], char *argv[], NPSavedData *saved) { > logmsg("npsimple: new\n"); > return NPERR_NO_ERROR; > } > > static NPError > destroy(NPP instance, NPSavedData **save) { > if(so) > npnfuncs->releaseobject(so); > so = NULL; > logmsg("npsimple: destroy\n"); > return NPERR_NO_ERROR; > } > > static NPError > getValue(NPP instance, NPPVariable variable, void *value) { > switch(variable) { > default: > logmsg("npsimple: getvalue - default\n"); > return NPERR_GENERIC_ERROR; > case NPPVpluginNameString: > logmsg("npsimple: getvalue - name string\n"); > *((char **)value) = "AplixFooPlugin"; > break; > case NPPVpluginDescriptionString: > logmsg("npsimple: getvalue - description string\n"); > *((char **)value) = "<a href=\"http:// > www.aplix.co.jp/ > \">AplixFooPlugin</a> plugin."; > break; > case NPPVpluginScriptableNPObject: > logmsg("npsimple: getvalue - scriptable object\n"); > if(!so) > so = npnfuncs->createobject(instance, > &npcRefObject); > npnfuncs->retainobject(so); > *(NPObject **)value = so; > break; > #ifdef XULRUNNER_SDK > case NPPVpluginNeedsXEmbed: > logmsg("npsimple: getvalue - xembed\n"); > /* *((PRBool *)value) = PR_FALSE; */ > *((NPBool *)value) = FALSE; > break; > #endif > } > return NPERR_NO_ERROR; > } > > static NPError /* expected by Safari on Darwin */ > handleEvent(NPP instance, void *ev) { > logmsg("npsimple: handleEvent\n"); > return NPERR_NO_ERROR; > } > > static NPError /* expected by Opera */ > setWindow(NPP instance, NPWindow* pNPWindow) { > logmsg("npsimple: setWindow\n"); > return NPERR_NO_ERROR; > } > > /* EXPORT */ > #ifdef __cplusplus > extern "C" { > #endif > NPError OSCALL > NP_GetEntryPoints(NPPluginFuncs *nppfuncs) { > logmsg("npsimple: NP_GetEntryPoints\n"); > nppfuncs->version = (NP_VERSION_MAJOR << 8) | > NP_VERSION_MINOR; > nppfuncs->newp = nevv; > nppfuncs->destroy = destroy; > nppfuncs->getvalue = getValue; > nppfuncs->event = handleEvent; > nppfuncs->setwindow = setWindow; > return NPERR_NO_ERROR; > } > > #ifndef HIBYTE > #define HIBYTE(x) ((((uint32)(x)) & 0xff00) >> 8) > #endif > NPError OSCALL > NP_Initialize(NPNetscapeFuncs *npnf > #if !defined(_WINDOWS) && !defined(OS_Darwin) > , NPPluginFuncs *nppfuncs) > #else > ) > #endif > { > logmsg("npsimple: NP_Initialize\n"); > if(npnf == NULL) > return NPERR_INVALID_FUNCTABLE_ERROR; > if(HIBYTE(npnf->version) > NP_VERSION_MAJOR) > return NPERR_INCOMPATIBLE_VERSION_ERROR; > npnfuncs = npnf; > #if !defined(_WINDOWS) && !defined(OS_Darwin) > NP_GetEntryPoints(nppfuncs); > #endif > return NPERR_NO_ERROR; > } > > NPError > OSCALL NP_Shutdown() { > logmsg("npsimple: NP_Shutdown\n"); > return NPERR_NO_ERROR; > } > > char * > NP_GetMIMEDescription(void) { > logmsg("npsimple: NP_GetMIMEDescription\n"); > return "application/x-vnd-aplix- > foo:.foo:dev-...@aplix.co.jp <foo%3a.foo%3adev-...@aplix.co.jp>"; > } > > NPError OSCALL /* needs to be present for WebKit based browsers */ > NP_GetValue(void *npp, NPPVariable variable, void *value) { > return getValue((NPP)npp, variable, value); > } > > #ifdef __cplusplus > } > > #endif > > > please help me out..... > thanks in advance... > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---