2011-10-15 5 views
4

Monodroid ne supporte pas nativement JavaScriptInterface avec WebView.Interface JavaScript Monodroid

Je cherche un exemple de fichier .java qui peut être utilisé avec cette solution de contournement.

IntPtr JavaScriptInterface_Class = JNIEnv.FindClass ("the/package/for/JavaScriptInterface"); 
IntPtr JavaScriptInterface_ctor = JNIEnv.GetMethodID (JavaScriptInterface_Class, "<init>", "()V"); 
IntPtr instance = JNIEnv.NewObject (JavaScriptInterface_Class, JavaScriptInterface_ctor); 

appView.AddJavascriptInterface (new Java.Lang.Object (instance), "Android"); 

Répondre

2

Vous pouvez utiliser une coutume .java tels que:

// TODO: use an actually valid package name. :-) 
package the.package.for; 

public class JavaScriptInterface { 
    // The JNI in the original question uses a default constructor. 
    // Either provide one explicitly or use the implicit one... 
    public JavaScriptInterface() 
    { 
    } 

    // TODO: add any methods you want invokable from JavaScript here. 
} 

Ne pas oublier de définir l'action de construction pour votre fichier .java à la AndroidJavaSource.

+0

Aussi simple que cela. Merci. – FlappySocks

1

Je sais que ce fil est déjà un peu vieux. Mais j'ai trouvé cela quand cherchait la même chose et voici la solution comment vous pouvez utiliser les méthodes C#

public class AndroidInterface : Java.Lang.Object 
{ 
     [Export] 
     public void Save(string text) 
     { 

     } 
} 

AndroidInterface androidInterace = new AndroidInterface(); 
webView.AddJavascriptInterface(androidInterface, "Android");