我想將變量傳遞給Android的JavaScript。當點擊地圖按鈕,它會打開這個類有以下onCreate
方法:與Android不工作的Javascript界面
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maps);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
myWebView = (WebView) findViewById(R.id.webview);
setMyWebviewSettings(myWebView.getSettings());
myWebView.setWebViewClient(new WebViewClient());
myWebView.setWebChromeClient(new WebChromeClient());
Bundle extras = getIntent().getExtras();
double[] coordinates = setCoordinates(extras);
myWebView.addJavascriptInterface(new JavaScriptInterface(coordinates), "JSInterface");
myWebView.loadUrl("http://10.0.0.32:8887/services/maps/examples/basic-example.htm");
}
這裏是setMyWebviewSettings
方法:
private void setMyWebviewSettings(WebSettings MyWebviewSettings){
MyWebviewSettings.setAllowFileAccessFromFileURLs(true);
MyWebviewSettings.setAllowUniversalAccessFromFileURLs(true);
MyWebviewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
MyWebviewSettings.setJavaScriptEnabled(true);
MyWebviewSettings.setDomStorageEnabled(true);
MyWebviewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
MyWebviewSettings.setBuiltInZoomControls(true);
MyWebviewSettings.setAllowFileAccess(true);
MyWebviewSettings.setSupportZoom(true);
}
那麼這裏就是JavaScriptInterface
:
public class JavaScriptInterface {
double lat;
double lon;
double pan;
JavaScriptInterface(double[] coordinate) {
this.lat = coordinate[0];
this.lon = coordinate[1];
this.pan = coordinate[2];
}
public double getLatValue() {
return lat;
}
public double getLonValue() {
return lon;
}
public double getPanValue() {
return pan;
}
}
這裏是setCoordinates
方法:
private double[] setCoordinates(Bundle extras) {
double[] coordinates = new double[3];
coordinates[0] = 45.9049;
coordinates[1] = 13.3177;
coordinates[2] = 15;
if (extras != null) {
coordinates[0] = extras.getDouble("lat");
coordinates[1] = extras.getDouble("lon");
coordinates[2] = extras.getDouble("pan");
}
return coordinates;
}
除了不加載地圖以外的所有工作。 Bundle extras
是Null
。該如何解決這個問題?
是的,我發現我正在傳遞一個空的Bundle。謝謝 –