Вы можете вызвать функцию java из javascript в webview.
Java
Методы Java представлены в Javascript с помощью специального класса.Вот пример.Открытые методы помечаются аннотацией @JavascriptInterface.В документации сказано, что аннотация обязательна для API уровня 17 и выше.Я не уверен, но я думаю, что до SDK 17 раскрыты все методы.
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
Добавьте класс в веб-просмотр с помощью
myWebView.addJavascriptInterface(new WebAppInterface(this), "android");
Первый параметр - это интерфейсный класс сконтекст и последний - это имя переменной, которая будет использоваться в Javascript.
Javascript
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
if(typeof android !== "undefined" && android !== null) {
android.showToast(toast);
} else {
alert("Not viewing in webview");
}
}
</script>
В Javascript есть глобальный объект под названием Android.Имя объекта происходит из метода addJavascriptInterface.Этот объект имеет все методы, аннотированные в классе интерфейса, в этом примере showToast (String toast).Здесь есть оператор if, чтобы проверить, установлен ли объект.С этим оператором if сайт можно использовать и в других браузерах, где нет интерфейса Android.