如何获取当前WebView的URL?

时间:2017-04-28 17:46:40

标签: android url webview android-sharing

我正在开发一个用户看到WebView的应用程序。有一个分享FloatingActionButton来分享Facebook或Whatsapp的链接。

我正在使用导航抽屉活动。 WebView和FAB都在content_main.xml中 在抽屉中选择每个选项时,WebView会相应地加载。

所以要获取我使用webView.getUrl()方法的URL。但是每当我触摸共享FAB时运行应用程序,应用程序强制关闭。如果没有这种方法,我可以继续进行,但我没有网址。

我的代码是:

WebView mywebView;
FloatingActionButton fab1 = (FloatingActionButton) findViewById(R.id.fab1);
    fab1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            /*Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();*/
            String url;
            //url=myWebView.getOriginalUrl().toString();
            url=myWebView.getUrl().toString();
            String message = "Text I want to share.";
            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("text/plain");


            share.putExtra(Intent.EXTRA_TEXT, url);

            startActivity(Intent.createChooser(share, "Title of the dialog the system will open"));

        }
    });

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,尝试将匿名侦听器类中的代码提取到方法中,然后调用该方法。其次,在调用任何方法之前,请始终检查Null指针。第三,不需要调用myWebView.getUrl()。toString(),它就像调用string.toString()一样没用。

private WebView myWebView = super.findViewById(R.id.mywebViewId);

private void setFabListener() {

    FloatingActionButton fab1 = (FloatingActionButton) super.findViewById(R.id.fab1);
    fab1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
             doOnFabPressed();
        }
    });

}

private void doOnFabPressed() {

    if (this.myWebView != null) {

        String url = this.myWebView.getUrl();
        String message = "Text I want to share.";

        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("text/plain");
        share.putExtra(Intent.EXTRA_TEXT, url);

        super.startActivity(Intent.createChooser(share, "Title of the dialog the system will open"));

    }


}