解决webview的loadurl方法自动补全地址,不加协议名称http://直接输入域名完成加载

问题引用:http://www.codes51.com/itwd/812069.html

 最近在学习android的WebView组件,其中的加载网页方法:loadUrl(String url),url不需给全了才能加载成功,比如要
想访问CSDN网站,url必须是http://www.csdn.net才能成功访问,如果url="www.csdn.net",就无法访问!因为我们访问网站
时,一般都只记得域名,很少会知道是什么协议(虽然大多数时候是http协议)
     有什么方法可以把类似www.csdn.net的网址加上对应的协议名(比如:http://、https://、FTP://、file:///),以达到直
接输入域名就能访问的效果,就像使用IE、Firefox之类的浏览器一样,我们访问百度,只需输入www.baidu.com,敲回车后,自
动为我们加上http://

刚好最近在做这个功能,网上搜了下没有找到合适的解决版本,自己写了一个


    public static final String HTTP = "http://";
    public static final String HTTPS = "https://";
    public static final String FILE = "file://";

    /**
     * 将关键字转换成最后转换的url
     *
     * @param keyword
     * @return
     */
    private static String converKeywordLoadOrSearch(String keyword) {
        keyword = keyword.trim();

        if (keyword.startsWith("www.")) {
            keyword = HTTP + keyword;
        } else if (keyword.startsWith("ftp.")) {
            keyword = "ftp://" + keyword;
        }

        boolean containsPeriod = keyword.contains(".");
        boolean isIPAddress = (TextUtils.isDigitsOnly(keyword.replace(".", ""))
                && (keyword.replace(".", "").length() >= 4) && keyword.contains("."));
        boolean aboutScheme = keyword.contains("about:");
        boolean validURL = (keyword.startsWith("ftp://") || keyword.startsWith(HTTP)
                || keyword.startsWith(FILE) || keyword.startsWith(HTTPS))
                || isIPAddress;
        boolean isSearch = ((keyword.contains(" ") || !containsPeriod) && !aboutScheme);

        if (isIPAddress
                && (!keyword.startsWith(HTTP) || !keyword.startsWith(HTTPS))) {
            keyword = HTTP + keyword;
        }

        String converUrl;
        if (isSearch) {
            try {
                keyword = URLEncoder.encode(keyword, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            converUrl = "http://www.baidu.com/s?wd=" + keyword + "&ie=UTF-8";
        } else if (!validURL) {
            converUrl = HTTP + keyword;
        } else {
            converUrl = keyword;
        }
        return converUrl;
    }

基本满足要求,和主流浏览器体验一直

你可能感兴趣的:(Android技巧,Android)