내부에서 실행 javascript
되는 html
페이지에 앉아있는 일부 함수 를 호출하려고 합니다 android webview
. 코드가 아래에서 수행하려는 작업은 매우 간단합니다 .Android 앱에서 javascript
테스트 메시지가 있는 함수를 호출합니다. 테스트 메시지는 토스트를 통해 테스트 메시지를 표시하는 Android 앱에서 다시 Java 함수를 호출합니다.
javascript
기능 외모가 좋아 :
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
WebView에서 javascript
운없이 다음과 같은 방법으로 전화를 시도했습니다 .
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
나는 활성화 javascript
했다WebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
그리고 여기에 Java
클래스
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
나는 내가 뭘 잘못하고 있는지 알기 위해 인터넷 검색에 많은 시간을 보냈다. 내가 찾은 모든 예제는이 접근법을 사용합니다. 여기에 잘못된 것이 있습니까?
편집 :javascript
에서 참조되고 사용되는 다른 외부 파일 이 몇 가지 있는데 html
문제가 될 수 있습니까?
@JavascriptInterface
JavaScript 인터페이스를 통해 WebView에 제공하려는 Java 메소드 에서 데코레이터 를 사용해야합니다 .
myWebView.loadUrl("javascript:testEcho('Hello World!')");
에서 html 파일을 이미 해당 웹보기에 첨부했음을 이해합니다. 어떻게했는지 말해 주실 수 있습니까?