热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidWeb-ViewshouldOverrideUrlLoading()已弃用.(替代方案)

如何解决《AndroidWeb-ViewshouldOverrideUrlLoading()已弃用.(替代方案)》经验,为你挑选了1个好方法。

我已经找到了一个让android在webview中工作的方法,但该方法已被弃用.任何人都可以给我新方法的完整代码片段.这是我在这个网站上找到的方法

Java代码如下:

@Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {

     if (url.startsWith("tel:")) {
         initiateCall(url);
         return true;
      }
       if (url.startsWith("mailto:")) {
         sendEmail(url.substring(7));
         return true;
      }
         return false;
  }

但是当我将目标平台作为Android 7.1.1时,它无法正常工作



1> Abhishek Sin..:

Android N及以上版本具有此方法签名:

public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)

所有Android版本都支持的方法具有此方法签名:

public boolean shouldOverrideUrlLoading(WebView view, String url)

我该怎么做才能使它适用于所有版本?

你需要覆盖这两种方法

对于每个api,Android N+您需要更改代码.

请检查以下代码.它将针对较低的API N以及以上

@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("tel:")) {
        initiateCall(url);
        return true;
    }
    if (url.startsWith("mailto:")) {
        sendEmail(url.substring(7));
        return true;
    }
    return false;
}

@RequiresApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    String url = request.getUrl().toString();
    if (url.startsWith("tel:")) {
        initiateCall(url);
        return true;
    }
    if (url.startsWith("mailto:")) {
        sendEmail(url.substring(7));
        return true;
    }
    return false;
}


推荐阅读
author-avatar
手机用户2502934875
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有