2013-01-16 32 views
16

Pracuję z systemem Android, aby strona internetowa wchodziła w interakcję z moją aplikacją. W związku z tym przejrzałem dokumentację i samouczki, a ostatecznie otrzymałem this site. W nim lista deweloperów powinna zawierać @JavascriptInterface przed jakąkolwiek funkcją, która ma być dostępna przez WebView i bez niej Jelly Bean nie rozpozna funkcji.Nie można rozwiązać @JavascriptInterface

Moim problemem jest to, że kiedy kładę, że otrzymuję błąd mówiąc:

@JavascriptInterface nie mogą być rozwiązane do rodzaju

Bez niego mój kod kompiluje i działa poprawnie, ale chcę kompatybilności z Jelly Bean. Obecnie pracuję na systemie Android 1.6 jako baza, więc czy nie ma po prostu @JavascriptInterface? Czy to jest specyficzna rzecz w stylu Jelly Bean, co oznacza, że ​​będę musiał stworzyć program specjalnie dla Jelly Bean? Każda pomoc będzie bardzo ceniona. Oto moja pełna klasa interfejsu:

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(); 
    } 

} 

Odpowiedz

36

@JavascriptInterface został wprowadzony w JellyBean.

Musisz ustawić cel Build Project API poziom 17

Od Eclipse IDE, przejdź do Project->Properties. Wybierz system Android i ustaw docelowy numer

Pakiet APK będzie działał na starszych wersjach Androida.

+0

ta jest poprawna. Teraz dobrze mi się pracuje. Dzięki .. – Nimmy

+2

@nimmy jak mogę to zrobić dla niższego poziomu API ?? –

19

Trzeba dodać to:

import android.webkit.JavascriptInterface; 

Check the sample here:

+1

to jest dostępne tylko wtedy, gdy ustawimy cel na poziomie interfejsu API 17, jak w powyższej odpowiedzi. – Prateek

Powiązane problemy