0

如何获取和共享当前 URL 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);

}
4

1 回答 1

0

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

你还没有解释那是什么意思。但是,您的代码有一些问题可能会导致您的问题。

首先,您正在构建Intent并调用setShareIntent()太快。mTrackUrlChange将在nullonCreateOptionsMenu(),因为您WebView将几乎没有开始加载网页。构建Intent并调用setShareIntent()inside onPageFinished(),而不是 inside onCreateOptionsMenu()

除此之外,由于您正在设置EXTRA_STREAM,额外的需要是 a Uri,而不是 a String,并且 MIME 类型需要是实际内容的 MIME 类型(例如,text/html对于网页)。另外,您要setShareIntent()多次调用,这不是必需的。

于 2017-02-17T17:28:46.123 回答