我正在尝试让我的android webview应用程序打开到手机的tel:链接。每次我打开一个电话连接,它都工作得很好,并且打开了电话。然而,一旦我完成我的呼叫并返回到应用程序,它是在一个页面上说“网页找不到电话:0000000000”。然后,我必须再次点击后退按钮,才能转到我点击电话号码的页面。
有没有办法让它打开电话链接,而不是试图在webview中找到页面,也不需要在手机上打开它?
这是我在WebView中使用的代码,用来覆盖它对电话和邮件链接的处理:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:") || url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
startActivity(intent);
}
view.loadUrl(url);
return true;
}
任何帮助都将不胜感激。我已经花了2个小时搜索商品,但没有得到任何答案。
发布于 2010-12-03 03:51:34
好了,我想我解决了这个问题。我只需要按如下方式分隔URL覆盖:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
startActivity(intent);
view.reload();
return true;
}
view.loadUrl(url);
return true;
}
现在,我的常规链接和电话链接一样有效。如果我需要,我也可以添加geo: link,它不会给我带来之前在手机上打开地图的问题。
发布于 2011-04-05 07:24:07
对于不应该被覆盖的URL,只需返回false,而不调用loadUrl(url)
:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if( URLUtil.isNetworkUrl(url) ) {
return false;
}
// Otherwise allow the OS to handle it
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity( intent );
return true;
}
我发现VIEWing tel:在我们尝试过的所有手机上都能正常工作。不需要特殊情况,因为它的拨号动作。
我注意到WebViews中不支持YouTube视频之类的东西,所以你可能也想检测一下。
整个过程可能被querying the PackageManager for Activities that handle your URI概括为所有类型的URI,这些URI也不是嵌入式浏览器。这可能会被其他已安装的浏览器搞糊涂。
发布于 2018-02-01 12:59:06
public class MainActivity extends Activity {
private static final String HTML ="<!DOCTYPE html><html><body><a
href='tel:867-5309'>Click here to call!</a></body></html>";
private static final String TEL_PREFIX = "tel:";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv = (WebView) findViewById(R.id.webview);
wv.setWebViewClient(new CustomWebViewClient());
wv.loadData(HTML, "text/html", "utf-8");
}
private class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView wv, String url) {
if(url.startsWith(TEL_PREFIX)) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
}
return false;
}
}
}
这就是我找到的修复方法。您必须使用此方法。
wv.setWebViewClient(new CustomWebViewClient());
https://stackoverflow.com/questions/4338305
复制相似问题