通讯录添加联系人的界面得到用户在文本框里输入的文字

com.android.contacts.ui.EditContactActivity类就是编辑联系人的界面,界面下有两个按钮,分别是“保存”和“放弃”。看看EditContactActivity类的声明,它实现了View.OnClickListener接口,并且重写了
Java代码 复制代码  收藏代码
  1. public void onClick(View view);  
public void onClick(View view);
方法,所以它在onCreate的时候,就set了这两个按钮的onclick事件为this。

第一步:
到EditContactActivity类重写的public void onClick(View view)方法里去,加上这样一段代码(写到保存或者放弃里都可以):
Java代码 复制代码  收藏代码
  1. //把mState遍历一遍全打印出来   
  2. if (mState != null)   
  3. {   
  4.     for(EntityDelta haha: mState)   
  5.     {   
  6.         System.out.println(haha.toString());   
  7.     }   
  8. }  
//把mState遍历一遍全打印出来
if (mState != null)
{
	for(EntityDelta haha: mState)
	{
		System.out.println(haha.toString());
	}
}


第二步:
编译代码(我是在android源代码上直接修改)的contects应用,并且把编译出来的Contacts.apk文件部署到手机或模拟器(这个编译和部署的步骤我就不详写了,更不要问我android源代码是怎么下载的,呵呵)。cmd命令行打开,用adb logcat命令观看触发事件时打印出来的东西(androidSDK完全配置好后,自己去研究一下adb命令)。
Contacts.apk文件部署好后,打开手机联系人,新建一个联系人,随便输入名字、姓氏和电话号码,点保存或放弃的按钮去触发你写的onClick事件,在logcat里我的打印结果如下:
Java代码 复制代码  收藏代码
  1. I/System.out( 2104): ({ _id=-1, account_name=null, account_type=null, }) =    
  2. I/System.out( 2104): {   
  3. I/System.out( 2104):    { _id=-7, mimetype=vnd.android.cursor.item/nickname, data2=1, }   
  4. I/System.out( 2104):    { _id=-6, mimetype=vnd.android.cursor.item/note, }   
  5. I/System.out( 2104):    { _id=-2, data1=13800138000, mimetype=vnd.android.cursor.item/phone_v2, data2=1, }   
  6. I/System.out( 2104):    { _id=-5, mimetype=vnd.android.cursor.item/photo, }   
  7. I/System.out( 2104):    { _id=-4, mimetype=vnd.android.cursor.item/name, data2=Testgivenname, data3=TestFamilyname, }   
  8. I/System.out( 2104):    { _id=-3, mimetype=vnd.android.cursor.item/email_v2, data2=1, }   
  9. I/System.out( 2104): }  
I/System.out( 2104): ({ _id=-1, account_name=null, account_type=null, }) = 
I/System.out( 2104): {
I/System.out( 2104): 	{ _id=-7, mimetype=vnd.android.cursor.item/nickname, data2=1, }
I/System.out( 2104): 	{ _id=-6, mimetype=vnd.android.cursor.item/note, }
I/System.out( 2104): 	{ _id=-2, data1=13800138000, mimetype=vnd.android.cursor.item/phone_v2, data2=1, }
I/System.out( 2104): 	{ _id=-5, mimetype=vnd.android.cursor.item/photo, }
I/System.out( 2104): 	{ _id=-4, mimetype=vnd.android.cursor.item/name, data2=Testgivenname, data3=TestFamilyname, }
I/System.out( 2104): 	{ _id=-3, mimetype=vnd.android.cursor.item/email_v2, data2=1, }
I/System.out( 2104): }

Testgivenname是我输入的Given name 值
TestFamilyname是我输入的Family name值
13800138000是我输入的电话号码


分析:
编辑联系人的所有数据都存储在mState里面!!!它EditContactActivity类的成员变量,看看它的声明EntitySet mState;这个EntitySet(com.android.contacts.model.EntitySet)类其实是个ArrayList,里面的元素都是EntityDelta型,看看
Java代码 复制代码  收藏代码
  1. public class EntitySet extends ArrayList<EntityDelta>  
public class EntitySet extends ArrayList<EntityDelta>
就知道了。所以上面的haha调用的toString()方法其实就在EntityDelta类(com.android.contacts.model.EntityDelta)里。ok,到EntityDelta里去找到toString()方法,对照打印出来的结果研究一下到底是怎么打印出来的,然后把姓、名、电话号码等数据就可以随便提取出来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值