Android Linkify小写URL

时间:2011-05-02 14:21:33

标签: android linkify

我的网址包含一些大写字母,例如http://myserver.com/apps/DroidApp.apk

当我将此网址传递给Android Linkify时,结果链接的字母大小写更改为http://myserver.com/apps/droidapp.apk

TextView upgradeLink = (TextView) findViewById(R.id.upgradeNow);
upgradeLink.setText("Download now.");
Pattern pattern = Pattern.compile("Download");
String scheme = "http://myserver.com/apps/DroidApp.apk+"?action=";
Log.e(MY_DEBUG_TAG,"Schema URL "+scheme); // printed http://myserver.com/apps/DroidApp.apk?action=
Linkify.addLinks(upgradeLink, pattern, scheme);

我怎么能过来这个?

1 个答案:

答案 0 :(得分:2)

在内部,Linkify正在调用

public static final boolean addLinks(Spannable s, Pattern p, String scheme, null, null)

检查code for that method

public static final boolean addLinks(Spannable s, Pattern p,
        String scheme, MatchFilter matchFilter,
        TransformFilter transformFilter) {
    boolean hasMatches = false;
    String prefix = (scheme == null) ? "" : scheme.toLowerCase(); // <-- here is the problem!
    Matcher m = p.matcher(s);

    while (m.find()) {
        int start = m.start();
        int end = m.end();
        boolean allowed = true;

        if (matchFilter != null) {
            allowed = matchFilter.acceptMatch(s, start, end);
        }

        if (allowed) {
            String url = makeUrl(m.group(0), new String[] { prefix },
                                 m, transformFilter);

            applyLink(url, start, end, s);
            hasMatches = true;
        }
    }

    return hasMatches;
}

扩展Linkify并覆盖此方法,删除scheme.toLowerCase()位。