I have adapted the example plugin of the android source and the browser recognises the plugin without any problem. Here is an extract of AndroidManifest.xml:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<service android:name="com.domain.plugin.PluginService">
<intent-filter>
<action android:name="android.webkit.PLUGIN" />
</intent-filter>
</service>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.webkit.permission.PLUGIN"></uses-permission>
The actual Service class looks like so:
public class PluginService extends Service {
@Override
public IBinder onBind(Intent arg0) {
Log.d("PluginService", "onBind");
return null;
}
@Override
public void onCreate() {
Log.d("PluginService", "onCreate");
// TODO Auto-generated method stub
super.onCreate();
AssetInstaller.getInstance(this).installAssets("/data/data/com.domain.plugin");
}
}
The AssetInstaller code is supposed to extract some files required by the actual plugin into the /data/data/com.domain.plugin directory, however wether onBind nor onCreate are called. But I get lot's of debug trace of the actual libnpplugin.so file I'm using.
So the puzzle is when and under what circumstance is the Service bound or created in case of a browser plugin. As things look the service seems to be a dummy service.
Having said that, is there another intent that can be executed at installation time probably?
The only solution I see right now is installing the needed files from the native plugin code instead.
Any ideas? I know this is quite a tricky question ;)