
我正在webvIEw中加载一个网站,我们在网站上使用了AJAX,它在网页浏览器和移动浏览器上也运行良好,但在android webvIEw中AJAX无法正常工作,控制台中没有错误.这是我的代码: –
public class Activity_WebVIEw extends AppCompatActivity implements ConnectivityReceiver.ConnectivityReceiverListener {WebVIEw webvIEw;ProgressDialog pro_dialog;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_web_vIEw); webvIEw = (WebVIEw) findVIEwByID(R.ID.webvIEw); webvIEw.getSettings().setPluginState(WebSettings.PluginState.ON); webvIEw.setWebVIEwClIEnt(new loadinsame()); pro_dialog = new ProgressDialog(Activity_WebVIEw.this); webvIEw.getSettings().setJavaScriptEnabled(true); webvIEw.getSettings().setDomStorageEnabled(true); webvIEw.getSettings().setAllowUniversalAccessFromfileURLs(true); boolean connection = checkConnection(); if (connection) { webvIEw.loadUrl("website url"); } else { Toast.makeText(Activity_WebVIEw.this, "Sorry! Not connected to internet", Toast.LENGTH_SHORT).show(); dialog_Show(webvIEw, "Please check you Inernet connect and Reload.", false); }}@OverrIDepublic voID onNetworkConnectionChanged(boolean isConnected) { if (!isConnected) { Toast.makeText(Activity_WebVIEw.this, "Sorry! Not connected to internet", Toast.LENGTH_SHORT).show(); }}private class loadinsame extends WebVIEwClIEnt { @OverrIDe public voID onPageStarted(WebVIEw vIEw, String url, Bitmap favicon) { super.onPageStarted(vIEw, url, favicon); pro_dialog.setCancelable(false); pro_dialog.setMessage("Loading..."); pro_dialog.show(); } @OverrIDe public boolean shouldOverrIDeUrlLoading(WebVIEw vIEw, String url) { vIEw.loadUrl(url); return true; } @OverrIDe public voID onPageFinished(WebVIEw vIEw, String url) { super.onPageFinished(vIEw, url); pro_dialog.dismiss(); } @OverrIDe public voID onReceivedError(final WebVIEw webvIEw, WebResourceRequest request, WebResourceError error) { super.onReceivedError(webvIEw, request, error); pro_dialog.dismiss(); // dialog_Show(webvIEw, "Error Occur, Do you want to Reload?", true); }}@OverrIDepublic voID onBackpressed() { if (webvIEw.canGoBack()) { webvIEw.goBack(); } else { super.onBackpressed(); }}private boolean checkConnection() { boolean isConnected = ConnectivityReceiver.isConnected(); return isConnected;}@OverrIDeprotected voID onResume() { super.onResume(); MyApplication.getInstance().setConnectivityListener(this);}}当我使用模拟器检查Chrome中的网站时,发现我的AJAX保持挂起状态,然后在一段时间后取消.
提前致谢.
解决方法:
通过覆盖shouldInterceptRequest拦截你的AJAX调用是这样的:
private class LoadInSame extends WebVIEwClIEnt { @OverrIDe public WebResourceResponse shouldInterceptRequest(WebVIEw webvIEw, WebResourceRequest webrequest) { Log.d("test", "shouldInterceptRequest"); return this.handleRequest(webrequest.getUrl().toString()); } @NonNull private WebResourceResponse handleRequest(@NonNull String urlString) { try { URL url = new URL(urlString); httpURLConnection connection = (httpURLConnection)url.openConnection(); connection.setRequestProperty("User-Agent", ""); connection.setRequestMethod("GET"); connection.setDoinput(true); connection.connect(); inputStream inputStream = connection.getinputStream(); return new WebResourceResponse("text/Json", "utf-8", inputStream); } catch (MalformedURLException e) { e.printstacktrace(); return null; } catch (ProtocolException e) { e.printstacktrace(); return null; }catch (IOException e) { e.printstacktrace(); return null; } }}还请遵循JAVA命名约定.
总结以上是内存溢出为你收集整理的Ajax在android webview中不起作用全部内容,希望文章能够帮你解决Ajax在android webview中不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)