2011-05-02 77 views
0

我有一些大写字母像http://myserver.com/apps/DroidApp.apk的Android Linkify下壳体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); 

哪有我过来了吗?

回答

3

内部,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()位。