【问题标题】:WebView not loading after internet permissions granted?授予 Internet 权限后 WebView 未加载?
【发布时间】:2016-07-12 01:54:58
【问题描述】:

我正在尝试使用 WebView 在我的应用程序中显示网页。起初,我在 AndroidManifest.xml 中没有任何权限,我收到错误“无法加载网页,因为 net::ERR_CACHE_MISS”

但现在我已将权限添加到 AndroidManifest.xml,WebView 加载为一个空白的白框。

这是我的 AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package= ... >

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

<application ...
</application>

</manifest>

还有我的 Java 类:

public class location_Fragment extends Fragment {

private WebView webView;

View rootview;

@Nullable
@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    rootview = inflater.inflate(R.layout.location_layout, container, false);
    webView = (WebView)rootview.findViewById(R.id.webView);

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    webView.loadUrl("https://www.google.com");
    return rootview;
   }
}

【问题讨论】:

  • 你的网络客户端在哪里?

标签: java android xml android-fragments webview


【解决方案1】:
Try this:
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        rootview = inflater.inflate(R.layout.location_layout, container, false);
        webView = (WebView)rootview.findViewById(R.id.webView);
        webView.setWebViewClient(new MyBrowser());
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webView.loadUrl("https://www.google.com");
        return rootview;
       }
    }

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

【讨论】:

    【解决方案2】:

    使用以下代码

    public class WebViewActivity extends AppCompatActivity {
        private WebView webView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_web_view);
            Bundle b = getIntent().getExtras();
            String data =b.getString("link");
            webView = (WebView) findViewById(R.id.webView1);
    
            webView.setWebViewClient(new MyWebViewClient());
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setBuiltInZoomControls(true);
            if(data.equals("")||data.equals("null")) {
                Toast.makeText(WebViewActivity.this,"No Link Available",Toast.LENGTH_SHORT).show();
            }
            {
                webView.loadUrl(data);
            }
            webView.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress) {
                    // Activities and WebViews measure progress with different scales.
                    // The progress meter will automatically disappear when we reach 100%
                   // activity.setProgress(progress * 1000);
                    WebViewActivity.this.setTitle("Loading...");
                    WebViewActivity.this.setProgress(progress * 100);
                    if(progress == 100)
                        WebViewActivity.this.setTitle(R.string.app_name);
                }
            });
        }
    
        private class MyWebViewClient extends WebViewClient {
            private ProgressDialog pDialog;
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              //  pDialog = new ProgressDialog(WebViewActivity.this,R.style.DialogTheme);
                view.loadUrl(url);
                return true;
            }
            //Show loader on url load
            public void onLoadResource (WebView view, String url) {
                if (pDialog == null) {
                    // in standard case YourActivity.this
                    pDialog = new ProgressDialog(WebViewActivity.this,R.style.DialogTheme);
                    pDialog.setMessage("Loading...");
                    pDialog.show();
                }
            }
    
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();
            }
    
            public void onPageFinished(WebView view, String url) {
                try{
                    pDialog.dismiss();
                    if (pDialog.isShowing()) {
                        pDialog.dismiss();
                        pDialog = null;
                    }
                }catch(Exception exception){
                    exception.printStackTrace();
                }
            }
        }
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                switch (keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            webView.goBack();
                        } else {
                            finish();
                        }
                        return true;
                }
    
            }
            return super.onKeyDown(keyCode, event);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-24
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多