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

1.保存一个“+8618621058121”号码的联系人"Jane"

2.保存一个号码是“42266888”的联系人“1”

3.信息-新建信息-在联系人输入框中输入“+86”-输入“1”-点击删除按钮

【测试结果】联系人变为1

【预期结果】联系人应为"Jane"

与问题相关的类为Mms下的ComposeMessageActivity,相关控件为在initRecipientsEditor()方法中初始化的mRecipientsEditor,所对应的控件为RecipientsEditor;这里简单介绍下RecipientsEditor-接收者编辑器的实现方法:

一条信息可以发送给1到多个目标用户——它们被称为“接收者”,以电话号码、E-Mail地址等形式存在。“接收者”通常是从“联系人应用”中选择或由用户直接输入。

在Messaging应用中,用于输入接收者的控件有独立实现——RecipientsEditor,它继承自MultiAutoCompleteTextView,我们知道AutoCompleteTextView组件提供了输入时推荐可选项的功能,而Multi...则意为着可输入多个项目(各项目间以逗号分隔),并分别推荐可选项。

推荐选项的数据源来自RecipientsAdapter适配器,它从ContactsProvider中读取MOBILE,WORK_MOBILE,MMS三种类型的电话号码作为推荐选项,在用户输入时自动匹配并推荐。

说起接收者我们就不得不讨论Contact(代表接收者)、ContactList(代表接收者列表)两个重要的类,他们提供了常用的组织联系人基本信息的方法,非常易于使用,同时它们也涉及到Cache缓存系统。

由于时间原因这里只是给出做出的改动:

ChipsRecipientAdapter类下的构造方法ChipsRecipientAdapter():

public ChipsRecipientAdapter(Context context) {

// The Chips UI is email-centric by default. By setting QUERY_TYPE_PHONE, the chips UI

// will operate with phone numbers instead of emails.

//The Chips UI is phone and email

//super(context, DEFAULT_PREFERRED_MAX_RESULT_COUNT, QUERY_TYPE_EMAIL_AND_PHONE);

super(context, DEFAULT_PREFERRED_MAX_RESULT_COUNT, QUERY_TYPE_PHONE);

}

Queries类下:

/**

* Phone and Email queries for supporting Chips UI.

*/

/* package */ class Queries {

public static final Query PHONE = new Query(new String[] {

Contacts.DISPLAY_NAME,       // 0

Phone.NUMBER,                // 1

Phone.TYPE,                  // 2

Phone.LABEL,                 // 3

Phone.CONTACT_ID,            // 4

Phone._ID,                   // 5

Contacts.PHOTO_THUMBNAIL_URI,// 6

Contacts.DISPLAY_NAME_SOURCE // 7

       //}, Phone.CONTENT_FILTER_URI, Phone.CONTENT_URI) {

}, Phone.CONTENT_FILTER_URI, PhoneAndEmail.CONTENT_URI) {

@Override

public CharSequence getTypeLabel(Resources res, int type, CharSequence label) {

return Phone.getTypeLabel(res, type, label);

}

};

如此,问题解决;(添加注释红色背景的为修改前代码)

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

时间: 2024-10-17 23:32:32

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

android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩溃

请修改文件 /alps/frameworks/ex/chips/src/com/android/ex/chips/RecipientAlternatesAdapter.java private static Cursor queryAddressData(Context context, ArrayList<String> addressesList,  int addressType) 把这里: /// M: Support recognizing two kinds of separato

分析:新建短信,当我们接受人RecipientsEditor中输入+86的时候,系统会自动在+86后加入空格

我们可以认为这是一个很人性的格式化操作,在ComposeMessageActivity中系统在调用initRecipientsEditor()方法对联系人进行初始化的时候调用了 PhoneNumberFormatter.setPhoneNumberFormattingTextWatcher(this, mRecipientsEditor);我们通过对代码进行追踪发现,最终调用了Framework中PhoneNumberFormattingTextWatcher类对电话号码进行格式化处理,并在处理

解决:短信添加录音附件,录音,没有录音时间限制,超出彩信最大限制也正常录音

[测试步骤] 短信添加录音附件,录音 [测试结果] 没有录音时间限制,超出彩信最大限制也正常录音 [预期结果] 应该有录音时间限制 首先分析是否因在彩信中没有没有在Intent中封装彩信剩余大小,定位到ComposeMessageActivity类的addAttachment()方法中: private void addAttachment(int type, boolean replace) { // Calculate the size of the current slide if we'

Android开发者请进,帮忙解决------------Android短信批量速度的优化

在做Android上短信的备份还原功能时,短信的恢复思路最初考虑的很简单,循环解析文件,每得到一条短信,就调用SMSProvider的insert方法将短信插入数据库,SMSProvider是短信数据库操作的最基本的类,重载了父类ContentProvider的query,insert,delete和update方法,除了insert方法,父类ContentProvider中还有个bulkInsert方法,该方法为批量插入,代码如下: <span style="font-size:14px

解决新建Android工程时自动生成appcompat_v7

appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本的界面. 那么有什么办法可以让项目不自动生成这个项目呢?可以这样做:在建立Android Application Project的时候,我们将Minimum Required SDK选择到Android 4.0版本或以上,就不会生成这个项目了.

Android 智能短信_第二天

这些博客都是我自己的学习笔记,不是用来教学的. 删除选中的短信: 我们删除短信其实很简单,但是我们要实现一个对话框去显示,还需要一个对话框的进度条. 删除短信操作就是操作数据库就行了.使用内容解析者去操作,但是我们要去看看到底要删除的uri是什么. 我们发现我们要删除一个就需要删除一个联系人,所以我们直接删除这个人名下的所有短信就可以了.我们可以找到他的id去删除. 对短信内容进行操作需要写短信的权限. Uri URI_SMS=Uri.parse("content://sms"); 我

Android5.0框架层短信接收过程分析

本文分析使用的是android5.0的源代码,涉及的相关文件: frameworks\opt\telephony\src\java\com\android\internal\telephony\RIL.java frameworks\base\core\java\com\android\internal\util\StateMachine.java frameworks\opt\telephony\src\java\com\android\internal\telephony\InboundSm

mobAndroid免费验证短信

一. 得到用户Appkey 和App Secret 1. 在Eclipse中创建新项目(Android Studio相同)记下包名,包名在mob后台创建应用的时候需要.这个一定要切记! 2. 登陆mob.com短信验证平台 开发者服务平台注册成为开发者,并创建应用. 1)选择系统的版本,Android或者ios: 2)填写应用名称,下载地址,选择应用的详细分类: 3)在开发模式完成后,正式上线的时候还需要上传应用的签名,这里就用到了上面的包名,最好不要后期修改,否则很是麻烦,需要做大篇幅的修改.

android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人

要使用一个ContentProvider,必须要知道的是它所能匹配的Uri及其数据存储的表的结构. 首先想办法找到访问短信及联系人数据的ContentProvider能接受的Uri: 到github上找对应ContentProvider的源码:https://github.com/android 有好多个,哪一个才是短信数据的ContentProvider呢? 在filters输入框:输入telephony. 现在只有一个了,打开: 装有git的话,可以选择clone到本地,没有的话,就选择下载