diff --git a/app/build.gradle b/app/build.gradle index d41f8f6..7a78a98 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,9 +11,9 @@ android { defaultConfig { applicationId "me.drakeet.inmessage" minSdkVersion 15 - targetSdkVersion 21 - versionCode 4 - versionName "1.0" + targetSdkVersion 22 + versionCode 5 + versionName "1.0.1" } sourceSets { main { diff --git a/app/src/main/java/me/drakeet/inmessage/MainActivity.java b/app/src/main/java/me/drakeet/inmessage/MainActivity.java index a401b5b..2d84d2b 100755 --- a/app/src/main/java/me/drakeet/inmessage/MainActivity.java +++ b/app/src/main/java/me/drakeet/inmessage/MainActivity.java @@ -112,8 +112,10 @@ private void setAdapter() { new OnItemClickListener() { @Override public void onItemClick(View view, int position) { - if (mMessages.get(position).getIsMessage()) { - showDetailSMS(mMessages.get(position)); + if(!mIsRefreshing) { + if (mMessages.get(position).getIsMessage()) { + showDetailSMS(mMessages.get(position)); + } } } } diff --git a/app/src/main/java/me/drakeet/inmessage/constant/StaticObjectInterface.java b/app/src/main/java/me/drakeet/inmessage/constant/StaticObjectInterface.java index ea689fc..f43530c 100644 --- a/app/src/main/java/me/drakeet/inmessage/constant/StaticObjectInterface.java +++ b/app/src/main/java/me/drakeet/inmessage/constant/StaticObjectInterface.java @@ -5,6 +5,6 @@ */ public interface StaticObjectInterface { - String[] CPATCHAS_KEYWORD = {"激活码", "动态码", "校验码", "验证码"}; + String[] CPATCHAS_KEYWORD = {"激活码", "动态码", "校验码", "验证码", "驗證碼", "激活碼", "動態碼", "校驗碼"}; String ACTION_CLICK = "me.drakeet.inmessage.intent.action.NotificationClick"; } diff --git a/app/src/main/java/me/drakeet/inmessage/service/SMSBroadcastReceiver.java b/app/src/main/java/me/drakeet/inmessage/service/SMSBroadcastReceiver.java index d4003f3..829e705 100755 --- a/app/src/main/java/me/drakeet/inmessage/service/SMSBroadcastReceiver.java +++ b/app/src/main/java/me/drakeet/inmessage/service/SMSBroadcastReceiver.java @@ -45,43 +45,43 @@ public void onReceive(Context context, Intent intent) { } this.abortBroadcast(); mHandler = new WeakHandler(); - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - Message smsMessage = new Message(); - smsMessage.setContent(content); - smsMessage.setSender(sender); - smsMessage.setDate(date); - String company = StringUtils.getContentInBracket(content, sender); - if (company != null) { - smsMessage.setCompanyName(company); - } - smsMessage.setIsMessage(true); - //格式化短信日期提示 - SimpleDateFormat sfd = new SimpleDateFormat("MM-dd hh:mm"); - String time = sfd.format(date); - //获得短信的各项内容 - String date_mms = time; - smsMessage.setReceiveDate(date_mms); - smsMessage.setReadStatus(0); - smsMessage.setFromSmsDB(1); - String captchas = StringUtils.tryToGetCaptchas(content); - if(!captchas.equals("")) { - smsMessage.setCaptchas(captchas); - } - String resultContent = StringUtils.getResultText(smsMessage, false); - if(resultContent != null) { - smsMessage.setResultContent(resultContent); - } - if(!VersionUtils.IS_MORE_THAN_LOLLIPOP) { - smsMessage.save(); - } - BusProvider.getInstance().register(this); - BusProvider.getInstance().post(new ReceiveMessageEvent(smsMessage)); - BusProvider.getInstance().unregister(this); - //终止广播 - } - }, 358 + mHandler.postDelayed( + new Runnable() { + @Override + public void run() { + Message smsMessage = new Message(); + smsMessage.setContent(content); + smsMessage.setSender(sender); + smsMessage.setDate(date); + String company = StringUtils.getContentInBracket(content, sender); + if (company != null) { + smsMessage.setCompanyName(company); + } + smsMessage.setIsMessage(true); + //格式化短信日期提示 + SimpleDateFormat sfd = new SimpleDateFormat("MM-dd hh:mm"); + //获得短信的各项内容 + String date_mms = sfd.format(date); + smsMessage.setReceiveDate(date_mms); + smsMessage.setReadStatus(0); + smsMessage.setFromSmsDB(1); + String captchas = StringUtils.tryToGetCaptchas(content); + if (!captchas.equals("")) { + smsMessage.setCaptchas(captchas); + } + String resultContent = StringUtils.getResultText(smsMessage, false); + if (resultContent != null) { + smsMessage.setResultContent(resultContent); + } + if (!VersionUtils.IS_MORE_THAN_LOLLIPOP) { + smsMessage.save(); + } + BusProvider.getInstance().register(this); + BusProvider.getInstance().post(new ReceiveMessageEvent(smsMessage)); + BusProvider.getInstance().unregister(this); + //终止广播 + } + }, 358 ); } } diff --git a/app/src/main/java/me/drakeet/inmessage/utils/StringUtils.java b/app/src/main/java/me/drakeet/inmessage/utils/StringUtils.java index 720fd54..ced8b20 100755 --- a/app/src/main/java/me/drakeet/inmessage/utils/StringUtils.java +++ b/app/src/main/java/me/drakeet/inmessage/utils/StringUtils.java @@ -9,7 +9,7 @@ /** * Created by Administrator on 2014/12/24 0024. */ -public class StringUtils implements StaticObjectInterface{ +public class StringUtils implements StaticObjectInterface { private StringUtils() { } @@ -40,7 +40,7 @@ public static String getContentInBracket(String str, String address) { Pattern pattern = Pattern.compile("\\【(.*?)\\】"); Matcher matcher = pattern.matcher(str); while (matcher.find()) { - if(matcher.group(1) != null && matcher.group(1).length() < 10) { + if (matcher.group(1) != null && matcher.group(1).length() < 10) { return analyseSpecialCompany(matcher.group(1), str, address); } @@ -48,7 +48,7 @@ public static String getContentInBracket(String str, String address) { Pattern pattern1 = Pattern.compile("\\[(.*?)\\]"); Matcher matcher1 = pattern1.matcher(str); while (matcher1.find()) { - if(matcher1.group(1) != null && matcher1.group(1).length() < 10) { + if (matcher1.group(1) != null && matcher1.group(1).length() < 10) { return analyseSpecialCompany(matcher1.group(1), str, address); } @@ -56,7 +56,7 @@ public static String getContentInBracket(String str, String address) { Pattern pattern2 = Pattern.compile("\\((.*?)\\)"); Matcher matcher2 = pattern2.matcher(str); while (matcher2.find()) { - if(matcher2.group(1) != null && matcher2.group(1).length() < 10) { + if (matcher2.group(1) != null && matcher2.group(1).length() < 10) { return analyseSpecialCompany(matcher2.group(1), str, address); } @@ -66,23 +66,22 @@ public static String getContentInBracket(String str, String address) { private static String analyseSpecialCompany(String company, String content, String address) { String companyName = company; - if(company.equals("掌淘科技")) { - int index = content.indexOf("的验证码"); - companyName = content.substring(0, index); - companyName = companyName.replaceAll("【掌淘科技】", "").trim(); - } - else { - if(content.contains("贝壳单词的验证码")) { + if (company.equals("掌淘科技")) { + int index = content.indexOf("的验证码"); + companyName = content.substring(0, index); + companyName = companyName.replaceAll("【掌淘科技】", "").trim(); + } else { + if (content.contains("贝壳单词的验证码")) { companyName = "贝壳单词"; } } - if(address.equals("10010")) { + if (address.equals("10010")) { companyName = "中国联通"; } - if(address.equals("10086")) { + if (address.equals("10086")) { companyName = "中国移动"; } - if(address.equals("10000")) { + if (address.equals("10000")) { companyName = "中国电信"; } return companyName; @@ -99,39 +98,59 @@ public static String tryToGetCaptchas(String str) { Matcher m = continuousNumberPattern.matcher(str); while (m.find()) { if (m.group().length() > 3 && m.group().length() < 8 && !m.group().contains(".")) { - return m.group(); + if(isNearToKeyWord(m.group(), str)) { + return m.group(); + } } } return ""; } + public static boolean isNearToKeyWord(String currentStr, String content) { + int startPosition = 0; + int endPosition = content.length() - 1; + if (content.indexOf(currentStr) > 10) { + startPosition = content.indexOf(currentStr) - 10; + } + if (content.indexOf(currentStr) + 10 < content.length() - 1) { + endPosition = content.indexOf(currentStr) + 10; + } + Boolean isNearToKeyWord = false; + for (int i = 0; i < CPATCHAS_KEYWORD.length; i++) { + if (content.substring(startPosition, endPosition).contains(CPATCHAS_KEYWORD[i])) { + isNearToKeyWord = true; + break; + } + } + return isNearToKeyWord; + } + public static boolean isCaptchasMessage(String content) { - Boolean isCaptchasMessage = false; - for(int i = 0;i < CPATCHAS_KEYWORD.length;i++) { - if(content.contains(CPATCHAS_KEYWORD[i])) { - isCaptchasMessage = true; - break; - } - } - return isCaptchasMessage; + Boolean isCaptchasMessage = false; + for (int i = 0; i < CPATCHAS_KEYWORD.length; i++) { + if (content.contains(CPATCHAS_KEYWORD[i])) { + isCaptchasMessage = true; + break; + } + } + return isCaptchasMessage; } /** * 根据短信获取描述文字 + * * @return */ public static String getResultText(Message message, Boolean isNotificationText) { String resultStr = ""; - if(message.getCompanyName() != null && !isNotificationText) { + if (message.getCompanyName() != null && !isNotificationText) { resultStr += "来自" + message.getCompanyName() + "的验证码:"; - } - else { + } else { resultStr += "当前验证码为:"; } - if(message.getCaptchas() != null) { + if (message.getCaptchas() != null) { resultStr += message.getCaptchas(); - } - else { + } else { resultStr += "点击查看详情."; } return resultStr; diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index bddf7b5..2faa71d 100755 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,7 +3,7 @@ #00bcd4 @color/actionbar_background - #ff2b4d90 + #008196 #00778d #ffffff diff --git a/screenshots/s2.png b/screenshots/s2.png index efa55a4..1638018 100755 Binary files a/screenshots/s2.png and b/screenshots/s2.png differ