如何从Android中的Bundle加载网址

时间:2015-06-17 19:02:39

标签: android android-webview bundle

我无法使用从上一个活动传递的链接加载页面。

代码如下

Build > Build Artifacts

所以,当我使用String url =“http://google.pl/nexus/4”时,一切似乎都没问题。而且我完全相信我的活动会从@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_webpage); webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); /*Bundle b = getIntent().getExtras(); String url = b.getString(DeviceDetails.URL_KEY);*/ String url = getIntent().getStringExtra(DeviceDetails.URL_KEY); //String url = "http://google.pl/nexus/4"; webView.setWebViewClient(new MyWebViewClient()); webView.loadUrl(url); } private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 获取网址,因为我调试了它。

UPD1:

getIntent

以前的活动。保证传递url因为我调试了它。并且toast还会在String inputUrl = detUrlEditText.getText().toString(); Intent intent = new Intent(DeviceDetails.this, ShowWebPageActivity.class); Bundle extras = new Bundle(); extras.putString(URL_KEY, inputUrl); intent.putExtras(extras); startActivity(intent); 中显示已传递的网址。

1 个答案:

答案 0 :(得分:0)

请勿在方法view.loadUrl(url)内调用shouldOverrideUrlLoading()

我在其他地方看过这样做的例子,我不明白为什么,这不应该是必要的。

当您处理URL并且WebView不应该加载它时,

shouldOverrideUrlLoading()应该返回true,并且当WebView继续加载URL时返回false。

如果您决定WebView应该打开不同的页面而不是URL参数,那么可以调用view.loadUrl()

以下是WebViewClient子类的示例:

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        if (handleWithSystemBrowser(url)) {
           Uri webpage = Uri.parse(url);
           Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
           if (intent.resolveActivity(getPackageManager()) != null) {
               startActivity(intent);
           }
           return true;   // tells WebView that we specifically handled the URL, so don't load it
        }

        return false;   // go ahead and load it in the WebView
    }

    private boolean handleWithSystemBrowser(String url) {

        // put your code here to check the URL
        // return true if you want the device browser to display the URL
        // return false if you want the WebView to load the URL
        .
        .
        .
    }
}