前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof
正文
在短信中存在URL识别不准确问题,包括大写字母无法识别、与中文字符相连无法识别、大写NET网址无法识别。
特别注意:Google的正则表达式是满足RFC 3987中的大部分内容。针对这个表达式的修改一方面可能会出现不满足RFC 3987规范的情况,还会影响到CTS。
在mediatek\frameworks\base\op\java\com\mediatek\op\util\DefaultPatterns.java里把Pattern.compile改为红线框起来部分:
如果是非op定制的版本,修改alps/framework/base/core/java/android/util/Patterns.java
OP01,09有定制,修改alps/mediatek/operator/OP0X/frameworks/java/com/mediatek/op/util/XXPatternsXX.java
在以上文件中寻找如下代码段:
将原文件类似代码段的尾部,替换成如下高亮所示。
可发现新增加 FILENAME_EXTENSION 定义如下。
目前这个扩展名支持mp3扩展名识别。
若想支持mp4,wma识别,修改如下。其他扩展名依此类推即可。
附上截图部分的代码段:
Pattern.compile(
"((?:((?i)ftp|http|https|rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)"
+ "\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_"
+ "\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?"
+ "((?:(?:[" + engIriChar + "][" + engIriChar + "\\-]{0,64}\\.)+" // named host
+ topLevelDomainStrForWebUrlExpand
+ "|(?:(?:25[0-5]|2[0-4]" // or ip address
+ "[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]"
+ "|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1]"
+ "[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}"
+ "|[1-9][0-9]|[0-9])))"
+ "(?:\\:\\d{1,5})?)" // plus option port number
+ "(\\/(?:(?:[" + engIriChar + "\\;\\/\\?\\:\\@\\&\\=\\#\\~" //plus option query params
+ "\\-\\.\\+\\!\\*\\'\\(\\)\\_])|(?:\\%[a-fA-F0-9]{2}))*"
+ "(?:[" + goodIriChar + "]*\\." + FILENAME_EXTENSION + ")?)?",
Pattern.CASE_INSENSITIVE); /// M: ignore case