android的版本是5.1
点击短信图标,首先进入的是ConversationList这个Activity
ConversationList是用来储存会话列表的界面,我们发短信时与多个联系人的
会话都储存在这里
点击新建消息,进入到ComposeMessageActivity
这个UI界面有两个作用
1。处理一个新的消息
2。查看/管理一个会话的消息历史
在onCreate()方法中有2个初始化UI元素的方法
initResourceRefs()是初始化当前activity元素的方法
initShareRessource()是用来初始化底部+号和点击该+号后的界面
点击+号后,底部会出现SharePanel界面
方法里面初始化了mSharePanel,mSharePanel是一个linearLayout,
进入到SharePanel类里面看到有一个内部类为ShareAdapter继承了BaseAdapter,
里面重写了一系列方法,这里只需要注意下getView方法即可。
回到initShareRessource()方法里看到,给mSharePanel设置了Handler为mHandler
这个mHandler是在ComposeMessageActivity里定义的一个mHandler
找到这个mHandler,在它的handleMessage方法里面有一个判断,
当是case ACTION_SHARE时,会执行方法doMmsAction(msg)
进入到doMmsAction方法里面,根据判断得出commonAttachmentType的值,
继续看这个方法,当MmsConfig.isSupportAttachEnhance()为true时,
会执行 addAttachment(commonAttachmentType, true)这个方法
找到这个方法,重点来了--------------------
里面有判断,当case AttachmentTypeSelectorAdapter.ADD_VCARD时
新建一个intent,并调用了 startActivityForResult(intent, REQUEST_CODE_ATTACH_VCARD)
这时我们就会进入到相应的activity里去选取一个联系人,
选完之后,就会回到 onActivityResult方法里面,
进入到这个方法里面我们看到,里面有判断
switch (requestCode)
case REQUEST_CODE_ATTACH_VCARD
我们看到里面调用了asyncAttachVCardByContactsId(data)方法
进入asyncAttachVCardByContactsId(data)方法里
看到初始化了一个VCardAttachment
紧接着有String fileName = va.getVCardFileNameByContactsId(contactsId)
进入到VCardAttachment的getVCardFileNameByContactsId方法里查看
里面有if (!ids.equals("")) {
fileName = attachVCard(ids);
}
进入到attachVCard里看到String fileName = createVCardFileName();
进入到createVCardFileName方法里面
终于找到了
直接将相应的代码改动如下:
if(DateFormat.is24HourFormat(mContext)){
name =
DateFormat.format("yyyyMMdd_HHmmss", new Date(System.currentTimeMillis())).toString();
}else{
name =
DateFormat.format("yyyyMMdd_hhmmss", new Date(System.currentTimeMillis())).toString();
}
当case AttachmentTypeSelectorAdapter.ADD_VCALENDAR时,按照上诉一样走就可以找到相应的位置,
是在VCalendarModel的intiFromUri方法里修改即可