0

次のような大文字を含むURLがありますhttp://myserver.com/apps/DroidApp.apk

この URL を 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);

どうすればこれを克服できますか?

4

2 に答える 2

3

内部的に、Linkify呼び出しています

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

そのメソッドのコードを確認してください:

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()ます。

于 2011-05-02T15:36:55.460 に答える