在我简单的Android应用程序中,我以编程方式在WebView中加载网页.它最初以默认网页开始,然后根据第一个用户输入加载下一个网页.JavaScript通过消息将信息传递回Android方面.一切正常,除非第二个网页不加载,无论我做什么和我给的URL.当我加载第二个测试时,会出现一个警告"必须在同一个线程上调用所有WebView方法." 但据我所知,我不使用多线程,也不需要使用多线程.
这是相关的代码:
public class MainActivity extends Activity {
public WebView myWebView;
public int state;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.webview);
WebSettings myWebViewSettings = myWebView.getSettings();
myWebViewSettings.setJavaScriptEnabled(true);
myWebViewSettings.setDomStorageEnabled(true);
myWebViewSettings.setAllowFileAccessFromFileURLs(true);
myWebViewSettings.setAllowUniversalAccessFromFileURLs(true);
myWebView.addJavascriptInterface(new JavascriptHandler(), "cpjs");
state = 0;
loadNextTest();
}
public void webviewLoadURL(String url) {
Log.d("app", "now loading " + url);
myWebView.clearHistory();
myWebView.clearFormData();
myWebView.clearCache(true);
myWebView.loadUrl(url);
}
final class JavascriptHandler {
@JavascriptInterface
public void sendToAndroid(String text) {
if (text.equals("confirmed at target")) {
loadNextTest();
}
} …Run Code Online (Sandbox Code Playgroud)