2013-01-16 5 views
16

Ich arbeite mit Android, um eine Webseite mit meiner App interagieren zu lassen. Als solche habe ich die Dokumentation und die Tutorials durchgelesen und bin dabei auf this site gekommen. Darin listen die Entwickler auf, dass Sie @JavascriptInterface vor jeder Funktion einfügen sollten, auf die Sie vom WebView zugreifen möchten, und dass Jelly Bean die Funktion nicht erkennt.@JavascriptInterface kann nicht aufgelöst werden

Mein Problem ist, dass, wenn ich das in setzen, ich einen Fehler zu sagen:

@JavascriptInterface kann nicht auf einen Typ

Ohne sie aufgelöst werden, mein Code kompiliert und funktioniert gut, aber ich will Jelly Bean Kompatibilität. Ich arbeite gerade an Android 1.6 als Basis, also hat es einfach nicht @JavascriptInterface? Ist das eine Jelly Bean-spezifische Sache, was bedeutet, dass ich ein Programm speziell für Jelly Bean machen muss? Jede Hilfe würde sehr geschätzt werden. Hier ist meine komplette Interface-Klasse:

import android.content.Context; 

public class WebAppInterface{ 

    Context mContext; 

    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a toast from the web page */ 
    //needed for jelly bean 
    @JavascriptInterface 
    public void turnOff() { 
     MyAlarmPopup.turnOff(); 
    } 

} 

Antwort

36

@JavascriptInterface ist in JellyBean eingeführt.

Sie müssen das Projekt Build-Ziel auf API-Ebene 17

Von Eclipse-IDE zu setzen, gehen Sie zu Project->Properties. Wählen Sie Android und setzen Sie das Ziel

Das APK wird auf älteren Versionen von Android funktionieren.

+0

Das ist richtig. Jetzt gut mit mir zu arbeiten. Danke .. – Nimmy

+2

@nimmy wie kann ich das für niedrigere API-Ebene tun? –

19

Sie müssen dies hinzufügen:

import android.webkit.JavascriptInterface; 

Check the sample here:

+1

dies wird nur verfügbar, wenn wir das Ziel auf API-Ebene 17 wie die obige Antwort setzen. – Prateek