webview没有从外部链接加载网站

时间:2016-07-23 07:55:06

标签: android android-webview

我在使用电子邮件中点击的网页视图中加载网址时遇到问题。它提示使用我的应用程序工作正常和花花公子,但它只是加载一个空白页面。这是我的代码。

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.util.Log;
    import android.content.Intent;
    import android.net.Uri;



    public class MainActivity extends AppCompatActivity {

    private static final String TAG = "appdebug";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webView1);

        webView.setWebViewClient(new WebViewClient());

        webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
        webView.getSettings().setJavaScriptEnabled(true);

        Log.i(TAG, "webview working");



    }
    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Log.i(TAG, "overrideurl");
            if (Uri.parse(url).getHost().equals("www.example.com")) {
                // This is my web site, so do not override; let my WebView load the page
                return false;
            }
            // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;

        }


    }
}

在Logcat中,它报告webview正在运行,但是我没有看到来自overrideURl的任何内容。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

它会起作用

公共类DynamicWebView扩展ActionBarActivity {     WebView网站;

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);


    Bundle bundle = getIntent().getExtras();

    String url = bundle.getString("WebIntent");
    Log.e("On Click Url", url);

    final RelativeLayout layout = new RelativeLayout(this);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            getWindowManager().getDefaultDisplay().getWidth(), getWindowManager().getDefaultDisplay().getHeight());

    layout.setLayoutParams(params);

    setContentView(layout);

    web = new WebView(this);
    web.getSettings().setJavaScriptEnabled(true);
    web.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

    web.setWebViewClient(new WebViewClient());
    web.loadUrl(url);

    layout.addView(web);
    layout.setVisibility(View.VISIBLE);

}

}

答案 1 :(得分:0)

关闭标记后,在manifest.xml中添加此权限

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

答案 2 :(得分:0)

这是答案。

 Uri uri = this.getIntent().getData();


    try {

        URL urls = new URL(uri.getScheme(), uri.getHost(), uri.getPort(), uri.getPath()+ "?"+ uri.getQuery());



        Log.i(TAG, String.valueOf(urls));

       webView.loadUrl(String.valueOf(urls));

    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

shouldOverrideUrlLoading是,我相信用于打开带有webview的链接,并且在应用从应用外部的网址加载时不会查看。