Android 如何获取当前WebView的URL?
我正在开发一个应用程序,用户可以在其中看到网络视图。有一个share FloatingAction按钮,用于共享指向Facebook或Whatsapp的链接 我正在使用导航抽屉活动。 WebView和FAB都位于Android 如何获取当前WebView的URL?,android,url,webview,android-sharing,Android,Url,Webview,Android Sharing,我正在开发一个应用程序,用户可以在其中看到网络视图。有一个share FloatingAction按钮,用于共享指向Facebook或Whatsapp的链接 我正在使用导航抽屉活动。 WebView和FAB都位于content\u main.xml 在抽屉中选择每个选项时,WebView将相应加载 因此,为了获取URL,我使用了webView.getUrl()方法。但在运行应用程序时,每当我触摸共享晶圆厂时,应用程序强制关闭。没有这个方法,我可以继续,但我没有网址 我的代码是: WebView
content\u main.xml
在抽屉中选择每个选项时,WebView将相应加载
因此,为了获取URL,我使用了webView.getUrl()
方法。但在运行应用程序时,每当我触摸共享晶圆厂时,应用程序强制关闭。没有这个方法,我可以继续,但我没有网址
我的代码是:
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"));
}
});
提前感谢您的帮助。首先,尝试将代码从匿名侦听器类提取到一个方法,然后调用该方法。其次,在调用任何方法之前,始终检查空指针。第三,不需要调用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"));
}
}