Ajax在android webview中不起作用

Ajax在android webview中不起作用,第1张

概述我正在webview中加载一个网站,我们在网站上使用了Ajax,它在网页浏览器和移动浏览器上也运行良好,但在androidwebview中ajax无法正常工作,控制台中没有错误.这是我的代码:–publicclassActivity_WebViewextendsAppCompatActivityimplementsConnectivityReceiver.Connec

我正在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中不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1119514.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存