如何从webview共享当前加载的URL

时间:2017-02-17 17:20:36

标签: android webview share-intent

如何在webview中获取和分享当前网址?我的共享有效,但不共享当前加载的URL。

以下是WebView

中的代码
private String mTrackUrlChange;

private WebViewClient webViewClient = new WebViewClient(){

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        frameLayout.setVisibility(View.VISIBLE);
        mTrackUrlChange=url;
        return true;
    }

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

       mTrackUrlChange = url;
    }
};

我的分享:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.menu, menu);
    MenuItem shareItem = menu.findItem(R.id.action_share);
    ShareActionProvider mShare = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, mTrackUrlChange);
    mShare.setShareIntent(shareIntent);
    shareIntent.putExtra(Intent.EXTRA_STREAM, mTrackUrlChange);
    mShare.setShareIntent(shareIntent);
    return super.onCreateOptionsMenu(menu);

}

1 个答案:

答案 0 :(得分:0)

  

我的分享有效,但不分享当前加载的网址

你没有解释这意味着什么。但是,您的代码存在一些问题,可能会导致您遇到的问题。

首先,您要构建dbms_output.enable并过早调用set serveroutput offIntent中的setShareIntent()mTrackUrlChange,因为您的null几乎不会开始加载网页。建立onCreateOptionsMenu()并在WebView内拨打Intent,而不是在setShareIntent()内。

除此之外,由于您要设置onPageFinished(),因此额外需要为onCreateOptionsMenu(),而不是EXTRA_STREAM,并且MIME类型必须是实际内容的MIME类型(例如,Uri用于网页)。此外,您多次致电String,这是不必要的。