我的应用程序中有一个webView。 webView最初会打开一个我创建的HTML页面,上面有几个按钮。按钮执行各种任务(我正在尝试学习如何使用webViews),如:1)显示android吐司,2)显示javascript警报,3)振动手机,4)显示当前地理位置,5)在webView中打开谷歌地图。
这是最后一个不起作用的。我搜索过这个网站和其他许多网站,但还没有找到有效的解决方案。
我很确定我的所有清单文件'东西'都是正确的(其他一切正常,包括最初的基于互联网的网页)。如果您认为需要,我也很乐意发帖。
我的activity_main.xml文件从来没有给我带来任何问题,但是如果你觉得它有帮助的话,我很乐意发帖。
以下是我的代码中的代码段:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.webView);
myWebView.loadUrl(url); // this one works
myWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setBuiltInZoomControls(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setGeolocationEnabled(true);
...
}
一切正常,其他html按钮也能正常工作。 然后是这个:
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();
}
@JavascriptInterface
public void vibrateDevice() {
Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(500);
}
@JavascriptInterface
public void showMapCurPos() {
new Handler().post(new Runnable() {
String url2 = "http://www.google.com/maps/@53.001153,-95.0752916,15z";
@Override
public void run() {
myWebView.clearCache(true);//Here you call the methond in UI thread
myWebView.loadUrl(url2);
}
});
}
}
一切都在那里工作,除了showMapCurPos()。我已经尝试过一个简单的myWebView.loadUrl(...)以及几次意图尝试。根据我的尝试,有时候该方法会使应用程序崩溃,但大多数情况下新网址都不会显示,并且会保留在原始网址上。
如果这是一个重复的问题,请原谅我,但我真的已经搜索了这个网站和其他许多人的答案(可能是坚实的8小时左右)。我尝试了很多这些答案都无济于事。我猜这是简单的事情,与我对webViews或活动或意图或三者的理解不足有关,甚至可能与我对Android开发的新见解有关。
答案 0 :(得分:0)