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

Android 如何从webview共享当前加载的URL,android,webview,share-intent,Android,Webview,Share Intent,如何在webview中获取和共享当前URL?我的共享有效,但不共享当前加载的URL 这是我在WebView private String mTrackUrlChange; private WebViewClient webViewClient = new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.o

如何在
webview
中获取和共享当前URL?我的共享有效,但不共享当前加载的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);

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

你还没有解释这意味着什么。然而,您的代码存在一些问题,这些问题可能导致您的问题

首先,您正在构建
Intent
并过早地调用
setShareIntent()
mTrackUrlChange
oncreateoptions menu()
中将为
null
,因为您的
WebView
刚刚开始加载网页。构建
Intent
并在
onPageFinished()
内部调用
setsharecontent()
,而不是在
oncreateoptions菜单()内部调用


除此之外,由于您正在设置
EXTRA\u STREAM
,因此额外的内容需要是
Uri
,而不是
字符串
,并且MIME类型需要是实际内容的MIME类型(例如,网页的
文本/html
)。另外,您多次调用
setShareContent()
,这是不必要的。

我的意思是它可以工作,但当我使用share时,它不包含URL@kielou:请看我答案的第二段。它不允许我在
onPageFinished()
@kielou:为什么不?您需要进行一些其他更改,例如将
mShare
设置为一个字段,而不是
oncreateoptions菜单()中的局部变量。演示如何从创建选项菜单()上的
以外的位置调用
setShareContent()