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

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;

}

}

}

}

时间: 2024-11-08 23:36:26

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

解决新建短信时,输入“+86”,然后输入联系人名字“1”,按删除键之后,联系人变为“1”,删除操作为达到预期结果

1.保存一个"+8618621058121"号码的联系人"Jane" 2.保存一个号码是"42266888"的联系人"1" 3.信息-新建信息-在联系人输入框中输入"+86"-输入"1"-点击删除按钮 [测试结果]联系人变为1 [预期结果]联系人应为"Jane" 与问题相关的类为Mms下的ComposeMessageActivity,相关控件为在initRecipie

android联系人中“网站”项字段输入tel:12345678901(冒号后数字大于10位)保存后点击联系人头像,联系人停止运行

1. 新建联系人->网站项输入"tel:012345678901" (冒号后数字大于10位的情况) -> 保存. 2. 进入联系人列表,点击联系人头像 结果: WebAddress.java中抛出异常,程序停止运行 该问题发生的原因是:当在people界面点击某个有网站字段的联系人的quickContact图标时,会检查网站字段的合法性, 如果合法,才会画出quickContactActivity界面,否则会报出ParseException的异常. 找到com/androi

git bash中避免在push时反复输入用户名和密码

我用的是windows系统,这几天学着使用git时发现每次使用git push时每次都要输入一遍用户名和密码,感觉特烦,特意上网查了下,找到了简化方法.虽然不是原创,但至少算是加了点自己的心得和经验吧,毕竟中间也硌了半天. 首先进入你用户名目录,windows一般是在C:\users\Administrator,此时需要新建一个名为.git-credentials的文件,windows本身不允许直接创建以"."开头的文件/文件夹,需要借助于其他工具,由于后面还是要用git来配置信息,这

【转载】Git push时重复输入用户名密码的问题

在windows上使用git来push到github服务器的时候,每次都需要填写用户名/邮箱.密码,很麻烦.最近用hexo写博客,需要频繁地进行博客配置和预览,而每次预览执行hexo deploy都需要输入用户名.密码验证,不胜其烦,今天下决心解决. 尽管github提供了SSH方式进行本地和服务端的链接,可是按照网站说明设置好之后,这个问题仍然得不到解决.尝试了好几次,最终用下面这个方法解决了. 首先添加环境变量. 在用户文件夹如C:\Users\zhangsan下新建一个名为_netrc的文

Android之EditText 属性汇总 +限定输入某些特殊字符

找了很多地方都没看到,经过尝试,发现这么一种方法可以达到限定edittext中的字符. android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./[email protected]#$%^*()_+}{:?&<>"&apos;" 里面是可以输入的字符,大家根据自己的需求添加. 再摘抄一部分其他前辈的博文,留做备份 android:layout_gravity="center

Ubuntu下配置Sublime到Dash board 以及 VI/VIM编辑文件时无权限保存的问题

[1]Ubuntu下配置Sublime到Dash board Ubuntu是个好系统,Sublime Text 是个好编辑器. 下载&安装 个人习惯喜欢到官网下载软件,http://www.sublimetext.com/2 选择合适的包下载回来的格式是.tar.bz2格式,需要进行解压. 1. 解压: tar -xvf Sublime\ Text\ 2.0.2.tar.bz2 2.为了在Terminal的任何位置都能执行./sublime_text文件,将解压后他的目录保存到环境变量$PATH

android之读取联系人信息

联系人信息被存放在一个contacts2.db的数据库中 主要的两张表 布局文件 在布局文件中定义一个button按钮来获取触发获取联系人信息的事件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="ver

android横竖屏切换时Activity的生命周期

1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate--> onStart--> onResume--> 3.按crtl+f12切换成横屏时 onSaveInstanceState--> onPause--> onStop--> onDestroy--> onCreate--> onStart--> onRestoreInstanceState--> onResume--> 4.再

安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)

安卓(android)建立项目时失败.出现AndroidManifest.xml file missing几种解决方法?(总结中) Eclipse新建项目.遇到这种问题.注意例如以下: 1.文件名称最好不要用中文. 2.文件夹也不要用中文. 3.这个不会出错,但出于程序编写习惯.第一个字母最好为大写.