Как сделать интерфейс в JavaScript и вызвать метод Android?

1

Я создаю приложение для Android, где загружается файл HTTP с поражением в webView, который находится в папке с ресурсами. Ниже приведен код повреждения файла HTTP.

<html>
<head>
</head>
<body>
<a href="javascript:void(0);" onclick="init();">Click on this link for a log 
message</a>
<br><br><br><br><br>

 <script>
function init(){
    android.log('Data from JS');
    android.log(android.data);
}

function showMessage(str){
    android.log(str);
}
</script>

</body>
</html>

Код OnCreate

 //add interface
    wv.addJavascriptInterface(jsInterface, "android");//android is the 
    keyword that will be exposed in js

Метод OnClick и метод интерфейса

 public void click(View view){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        wv.evaluateJavascript("javascript:showMessage('Hello World!')", null);
    }
}

//javascript interface
private class JsInterface {
    @JavascriptInterface
    //function that will be called from assets/test.js
    //js example: android.log('my message');
    public String data() {
        return "DATA FROM ANDROID";
    }

    public void log(String msg) {
        Log.d("MSG FROM JAVASCRIPT", msg);
    }
}

Выше полный код, как я использую интерфейс в JavaScript. Долгий срок назад Я использовал то же самое, что работал в моем старом проекте, но теперь он не работает, может когда-нибудь ответить мне, этот метод устарел в андроиде или там какая-то другая работа для этого?

Теги:
webview
interface

2 ответа

0

Это класс интерфейса js:

public class JS_INTERFACE {

    Context mContext;

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

    /** Show a toast from the web page */
    @JavascriptInterface
    public void native_showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }

    @JavascriptInterface
    public void native_ShowNotifyTest1(String toast , String BigOrSmall ) {

        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();

    }

}


 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    WebSettings settings = webView1.getSettings();

    // Enable Javascript
    settings.setJavaScriptEnabled(true);

    webView1.addJavascriptInterface(new JS_INTERFACE(getContext()), "android");

}

Я использую onCreateView для init.

Обновленный ответ:

Используйте JQ в своем приложении (простое использование javascript):

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {

        webView.evaluateJavascript("someJQFunction();", null);

    } 
else {

        webView.loadUrl("javascript: someJQFunction();");

    }
  • 0
    Спасибо подскажите как добавить jQuery в андроид
-2

Добавьте @JavascriptInterface перед public void log(String msg).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню