Да, это так. в основном можно вызвать любой родной код Android из WebView
. Вы определяете методы, которые вы хотите предоставить для вызова из класса WebView
в классе, передаете экземпляр этого класса в WebView
и с тех пор методы становятся доступными, как методы javascript. вот пример (это копия, вставленная из другого ответа; вам нужно заменить намерение видео на намерение отображения изображения):
Вызов собственного кода из веб-представления:
При создании веб-представления добавьте интерфейс javascript (в основном класс java, методы которого будут вызываться через javascript в веб-представлении).
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Определение самого класса интерфейса javascript (это примерный класс, который я взял из другого моего ответа и открывает видео в собственном намерении)
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void startVideo(String videoAddress){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
activity.startActivity(intent);
}
}
Теперь, если вы хотите вызвать этот код из HTML страницы, вы предоставляете следующий метод:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Так что вам нужно добавить соответствующий метод в JSInterface
и вызвать код из Веб-приложения.