Ajax在Android Webview中不起作用

Pawanpreet

我正在webview中加载网站,我们在网站中使用了Ajax,它在Web浏览器和移动浏览器上也能正常工作,但是在android webview中,Ajax无法正常工作,控制台中没有错误。这是我的代码:-

public class Activity_WebView extends AppCompatActivity implements  
 ConnectivityReceiver.ConnectivityReceiverListener {
WebView webview;
ProgressDialog pro_dialog;

@Override
protected 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);
    }
}

@Override
public 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);

    }
}

@Override
public void onBackPressed() {

    if (webview.canGoBack()) {
        webview.goBack();
    } else {
        super.onBackPressed();
    }
}

private boolean checkConnection() {
    boolean isConnected = ConnectivityReceiver.isConnected();
    return isConnected;
}

@Override
protected 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命名约定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么minHeight属性在WebView Android中不起作用?

JavaScript警报在Android WebView中不起作用

用于WebView的android中的BasicAuthentication不起作用

简单的HTML5游戏在android Webview中不起作用

localStorage html5功能在Samsung Android设备上的WebView中不起作用

Android Webview Javascript-对脚本的引用不起作用

WebView.loadUrl(URL,headers)在android中不起作用

样式在android webview中不起作用

AngularJS在Xamarin Android Webview中不起作用

相机允许不起作用android webview

navigator.permissions.query在android / ios webview中不起作用

android setVisibility(LinearLayout.VISIBLE)在WebView @JavascriptInterface函数中不起作用

document.getElementsByName在android webview中的某些网站中不起作用

Google论坛短网址在Android应用程序Webview中不起作用

Android:WebView中的网络摄像头错误(摄像头权限不起作用)

如果在WebChromeClient#onCreateWindow的回调中创建了Webview,则Android WebView addJavascriptInterface将不起作用

android webview:网站控件不起作用

window.close()在android webview中不起作用?

Webview中的缓存在Android中不起作用

将Google Forms集成到Android WebView中,“登录”按钮不起作用

来自Webview的Android Open Camera在Andorid 6+中不起作用

社交按钮在 Phonegap Android webview 中不起作用

检查 webview 中的 url 更改 android 不起作用

Android:在 webview 中下载在 oreo 中不起作用,它在 Oreo 设备中强制关闭

AJAX POST 方法在 android 中不起作用

音频控件在 Android WebView 中不起作用

jQuery .focus() 在 Android webview 中不起作用

反应原生 webview 在 android 10+ 中不起作用

汉堡菜单在 Android WebView 中不起作用