WebView在Android上加载某些URL时不显示任何内容

时间:2018-09-06 02:46:01

标签: android webview

我在Android上使用WebView进行了演示。这是我的代码:

public class AuthPortalActivity extends Activity {

    WebView authPortalWebview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.auth_portal_activity);

        authPortalWebview = (WebView) findViewById(R.id.auth_portal_webview);

        authPortalWebview.setWebViewClient(new WebViewPortal());
        openProvisioningPortal();
    }

    private void openProvisioningPortal() {
        authPortalWebview.getSettings().setLoadsImagesAutomatically(true);
        authPortalWebview.getSettings().setJavaScriptEnabled(true);
        authPortalWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        authPortalWebview.loadUrl("https://example.com");
    }

}

class WebViewPortal extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
        return true;
    }

    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }

    @Override
    public void onPageFinished(final WebView view, String url) {
        super.onPageFinished(view, url);
        Log.d("TAG", "onPageFinished");
    }
}

它可以加载一些URL,例如Google,Facebook ...但是当我尝试使用Portal URL时,它什么也不能显示。确保我的Portal使用“ https”,并且如果我使用Chrome之类的浏览器,它也可以成功加载...

在这里是加载URL和方法 onPageFinished 之后的WebView。

enter image description here

我在代码中忘记了什么吗?

2 个答案:

答案 0 :(得分:1)

返回false中的shouldOverrideUrlLoading即可继续正常加载网址

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
    return false;
    //     ^^^^^
}

您有自己的客户端WebViewPortal,因此还需要加载网址

  @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.d("TAG", "shouldOverrideUrlLoading url = " + url);
        view.loadUrl(url);
        //^^^^^^^^^^^^^^ load the url once you receive web view and link
        return true;
    }

WebViewClient负责处理请求并根据onPageFinish或启动等通知进行操作。

答案 1 :(得分:0)

use this line in Androidmanifest.xml 
//-------------this is Internet permission-------------------


  <uses-permission android:name="android.permission.INTERNET">

    </uses-permission>