Android webview页面不可用

Android webview页面不可用,android,webview,webviewclient,Android,Webview,Webviewclient,我开发了一个小型android webview应用程序来访问一个基于PHP的内部(本地网络)站点 这是我的密码: package com.CheckInventory; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.WindowManager; import android.webkit.WebChromeClient; impor

我开发了一个小型android webview应用程序来访问一个基于PHP的内部(本地网络)站点

这是我的密码:

package com.CheckInventory;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebStorage;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

@SuppressWarnings("unused")
public class CheckInventoryActivity extends Activity {
    WebView webview;
    String username; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        WebView webView = (WebView) findViewById(R.id.webview);
        webView.setBackgroundColor(0);
        webView.setBackgroundResource(R.drawable.myimage);
        webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
        WebSettings webSettings = webview.getSettings();
        webSettings.setLoadWithOverviewMode(true);

        webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

        webSettings.setJavaScriptEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/");
        webSettings.setDomStorageEnabled(true);
        webview.setWebChromeClient(new WebChromeClient());
        webview.loadUrl("http://192.168.0.124/android");
        webview.setWebViewClient(new HelloWebViewClient());

    }
    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }


    @Override
    public boolean onKeyDown (int keyCode, KeyEvent event) {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()){
            //webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

}
站点有身份验证,但我想在应用程序和站点之间添加一些身份验证(我如何做?可能在调用url时传递一个参数),其次也是更重要的一点,具体来说,我应该把onReceivedError放在哪里,这样当用户离开大楼或连接松动时,他们就不会看到url或页面

public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) {
        Toast.makeText(Webform.this, "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show();
    }
我在中看到了这个解释,但我不知道在哪里实现它


提前感谢您

您需要创建一个类来扩展WebViewClient并在ReceiveDerror上实现方法

像这样

class myWebClient extends WebViewClient {

    @Override
    public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl) {
        Toast.makeText(Webform.this, "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show();
        super.onReceivedError(view, errorCode, description, failingUrl);
    }

}
然后,您需要将新的WebViewClient设置为您的WebView

    web = (WebView) findViewById(R.id.webview);
    web.setWebViewClient(new myWebClient());

希望这有帮助

您可以在您的
HelloWebViewClient
类中添加
onReceivedError
,并在出现错误时处理您想要处理的内容

private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error){
           //Your code to do
        Toast.makeText(getActivity(), "Your Internet Connection May not be active Or " + error , Toast.LENGTH_LONG).show();
        }
    }

UnQuaiz:我不知道如何实现你的答案,你能给我看一下你将要编写的全部代码吗?我真诚地想感谢你的时间!!!不幸的是,它没有起作用。它仍然显示“未找到”和url。最终,我正在寻找一个类似于谷歌play的解决方案,如果互联网不可用,它会显示一个重试按钮。由于这是由谷歌的人做的,这是可能的,我只是想知道这有多困难。也许你应该首先检查互联网连接,然后显示警告和重试按钮?试试这个:UnQuaiz:package com.GlobalChess;导入android.widget.Toast;导入android.content.Context;公共类JavaScriptInterface{Context mContext;/**实例化接口并设置上下文/JavaScriptInterface(Context c){mContext=c;}/*从网页显示toast*/public void showtoos(String toast){toast.makeText(mContext,toast.LENGTH_LONG).Show()}