android 新建/编辑联系人时,检测输入的email/邮件地址格式是否合法

362 篇文章 3 订阅
129 篇文章 0 订阅
JB版本:
1.SIM/USIM卡联系人:可以直接使用EditSimContactActivity中的USIM_EMAIL_PATTERN,搜索与“USIM_EMAIL_PATTERN”,将相关code所加的注释去掉即可


2.手机本地联系人:修改代码如下
ContactEditorFragment.java (packages\apps\contacts\src\com\android\contacts\editor) 
A 引入包
import java.util.regex.Pattern;
B 增加变量
private static final String USIM_EMAIL_PATTERN = "0-9][a-z][A-Z][_0-9][a-z][A-Z][-_.*@0-9][a-z][A-Z][-_.+";
C save函数中,
在如下语句:
       if (!hasValidState() || mStatus != Status.EDITING) {
            Log.i(TAG, "[save] !hasValidState() : " + (!hasValidState())
                    + " | mStatus != Status.EDITING : " + (mStatus != Status.EDITING)
                    + " , mStatus : " + mStatus);
            return false;
        }
之后添加:
  //email  
  for (int n = 0; n < mState.size(); n++) {   
   RawContactDelta field =  mState.get(n);
   ArrayList<ValuesDelta> data = field.getMimeEntries("vnd.android.cursor.item/email_v2"); 
   if(data != null )
      for (int m = 0; m < data.size(); m++) {     
         String email = data.get(m).getAsString("data1");
             if (!TextUtils.isEmpty(email)) {  
                if (!Pattern.matches(USIM_EMAIL_PATTERN, email)) {
       
                   Toast.makeText(mContext, R.string.email_invalid, Toast.LENGTH_SHORT).show();
                   getActivity().finish();
                   return false;
               }
            }      
       }
   }
KK版本
1.    SIM/USIM卡联系人:
SIMEditProcessor.java (alps\packages\apps\contacts\src\com\mediatek\contacts\simservice)
先添加 private boolean mEmailInvalid = false;
然后修改
 private boolean isUSIMUpdateValuesInvalid()
 //mtk add
if (!TextUtils.isEmpty(mUpdatemail)) {
    if (!Pattern.matches(USIM_EMAIL_PATTERN, mUpdatemail)) {
          mEmailInvalid = true;
    }
}
//mtk add end
LogUtils.i(TAG, "mNumberIsNull:" + mNumberIsNull + ",mNumberInvalid:" +
                mNumberInvalid + ",mFixNumberInvalid:" + mFixNumberInvalid);  //参考位置
 
再修改
private boolean isInsertValuesInvalid()
            if (!TextUtils.isEmpty(mUpdateAdditionalNumber)) {
                if (!Pattern.matches(SIM_NUM_PATTERN, PhoneNumberUtilsEx
                        .extractCLIRPortion(mUpdateAdditionalNumber))) {
                    mFixNumberInvalid = true;
                }
            }//参考位置
 //mtk add
if (!TextUtils.isEmpty(mUpdatemail)) {
    if (!Pattern.matches(USIM_EMAIL_PATTERN, mUpdatemail)) {
          mEmailInvalid = true;
    }
}
//mtk add end
 
最后修改
private boolean setSaveFailToastText()
        }*/ else if (mEmailInvalid) {
            mSaveFailToastStrId = R.string.cannot_insert_error_format_email;  //资源请自己添加
            mEmailInvalid = false;
2.手机本地联系人:修改代码如下
ContactEditorFragment.java (packages\apps\contacts\src\com\android\contacts\editor) 
A 引入包
import java.util.regex.Pattern;
B 增加变量
private static final String USIM_EMAIL_PATTERN = "0-9][a-z][A-Z][_0-9][a-z][A-Z][-_.*@0-9][a-z][A-Z][-_.+";
C save函数中,
在如下语句:
       if (!hasValidState() || mStatus != Status.EDITING) {
            Log.i(TAG, "[save] !hasValidState() : " + (!hasValidState())
                    + " | mStatus != Status.EDITING : " + (mStatus != Status.EDITING)
                    + " , mStatus : " + mStatus);
            return false;
        }
之后添加:
  //email  
  for (int n = 0; n < mState.size(); n++) {   
   RawContactDelta field =  mState.get(n);
   ArrayList<ValuesDelta> data = field.getMimeEntries("vnd.android.cursor.item/email_v2"); 
   if(data != null )
      for (int m = 0; m < data.size(); m++) {     
         String email = data.get(m).getAsString("data1");
             if (!TextUtils.isEmpty(email)) {  
                if (!Pattern.matches(USIM_EMAIL_PATTERN, email)) {
       
                   Toast.makeText(mContext, R.string.email_invalid, Toast.LENGTH_SHORT).show();
                   getActivity().finish();
                   return false;
               }
            }      
       }
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值