Google지도 자바 스크립트 라이브러리와 함께 자바 스크립트 인터페이스를 사용하려고합니다.
검색 한 결과 거의 비슷합니다.이 JavascriptInterface과 비슷한 것을 발견했습니다. 이것은 내 인터페이스webview의 Android 자바 스크립트 인터페이스
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<script type="text/javascript">
function testAPI() {
JSInterface.test();
}
</script>
<script>
// gooogle maps code
//
</script>
</head>
<body>
<div id="map-canvas"></div>
<div><input type="button" value="Make Toast" onClick="testAPI()" /></div>
:
이
내 코드는 내가 만드는 곳public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void test(){
Toast.makeText(activity.getApplicationContext(),
"Javascript interface test.", 0).show();
}
}
이것은 모든 :
myBrowser = (WebView) findViewById(R.id.mybrowser);
myBrowser.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
myBrowser.getSettings().setJavaScriptEnabled(true);
String javascrips = null;
// myBrowser.loadUrl("file:///android_asset/geolocation.html");
try {
AssetManager am = getAssets();
InputStream input = am.open("geolocation.html");
int size;
size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
javascrips = new String(buffer);
} catch (IOException e) {
e.printStackTrace();
}
jsInterface = new JavaScriptInterface(this);
myBrowser.addJavascriptInterface(jsInterface, "JSInterface");
myBrowser.loadDataWithBaseURL("file:///android_res/raw/", javascrips,
"text/html", "UTF-8", null);
(버튼에 자바 스크립트를 클릭 testAPI() 함수로 입력), 아무 일도 일어나지 않습니다. Toast가 왜 나타나지 않습니까? 테스트에 @JavascriptInterface를 추가
로 시작하는 주석이 필요하십니까? – 323go
아니요. –
좋습니다. 먼저 수정해야 할 수 있습니다. 귀하의 html에있는'testAPI()'에 대한 호출 뒤에 세미콜론이 있어야합니까? 나는 자바 스크립트보다 자바를 더 많이 사용한다;) – 323go