web-dev-qa-db-de.com

@JavascriptInterface kann nicht aufgelöst werden

Ich arbeite mit Android, um eine Webseite mit meiner App zu interagieren. Als solches habe ich die Dokumentation und die Tutorials durchgesehen und bin auf diese Seite gekommen. Darin listet der Entwickler auf, dass Sie @JavascriptInterface vor jeder Funktion einfügen sollten, auf die das WebView zugreifen soll, und dass Jelly Bean die Funktion ohne diese Funktion nicht erkennt.

Mein Problem ist, dass ich beim Einfügen eine Fehlermeldung erhalte:

@JavascriptInterface kann nicht in einen Typ aufgelöst werden

Ohne es wird mein Code kompiliert und funktioniert einwandfrei, aber ich möchte Jelly Bean-Kompatibilität. Ich arbeite derzeit an Android 1.6 als Basis, hat es also einfach keinen @JavascriptInterface? Ist das eine Jelly Bean-spezifische Sache, was bedeutet, dass ich ein Programm speziell für Jelly Bean erstellen muss? Jede Hilfe wäre sehr dankbar. 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();
    }

}
18
user1982687

@JavascriptInterface wird in JellyBean eingeführt.

Sie müssen das Project Build Target auf API Level 17 setzen

Wechseln Sie in der Eclipse-IDE zu Project->Properties. Wählen Sie Android und legen Sie das Ziel fest

Das APK wird auf älteren Versionen von Android funktionieren.

37
Tarak

Sie müssen dies hinzufügen:

import Android.webkit.JavascriptInterface;

Überprüfen Sie das Beispiel hier:

20
willandlily

Schritte für Benutzer von Android Studio:

  1. Stellen Sie sicher, dass in build.gradle die minSdkVersion 17 oder höher ist
  2. import Android.webkit.JavascriptInterface; hinzufügen
0
Balazs F.