新增或者修改联系人不会自动聚合

packages/apps/ContactsCommon/src/com/android/contacts/common/model/RawContactDelta.java

    public void buildDiff(ArrayList<ContentProviderOperation> buildInto) {if (isContactInsert) {// TODO: for now simply disabling aggregation when a new contact is// created on the phone.  In the future, will show aggregation suggestions// after saving the contact.mValues.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_SUSPENDED);}...final boolean addedOperations = buildInto.size() > firstIndex;if (addedOperations && isContactUpdate) {// Suspend aggregation while persisting updatesbuilder = buildSetAggregationMode(beforeId, RawContacts.AGGREGATION_MODE_SUSPENDED);buildInto.add(firstIndex, builder.build());// Restore aggregation mode as last operationbuilder = buildSetAggregationMode(beforeId, RawContacts.AGGREGATION_MODE_DEFAULT);buildInto.add(builder.build());} else if (isContactInsert) {// Restore aggregation mode as last operationbuilder = ContentProviderOperation.newUpdate(mContactsQueryUri);builder.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DEFAULT);...}}

可以看出插入或者删除的时候是会先关闭聚合,然后再开启聚合。这个就避免了效率的问题。我手头只有mtk的代码,所以不确定这个是mtk的修改还是google就是这种意图,个人猜google的源码就是这样。

想要达到标题的效果的话修改下代码即可,不过其他后果未知。

导入卡联系人时不会自动聚合的问题

packages/apps/Contacts/src/com/mediatek/contacts/simservice/SIMImportProcessor.java

      private int actuallyImportOneSimContact(Context context, final Cursor cursor,final ContentResolver resolver, int subId, int simType, long indexInSim,boolean importSdnContacts, ArrayList<ContentProviderOperation> operationList,int loopCheck, AccountWithDataSetEx account, boolean isUsim, int accountSubId,String countryCode) {...values.put(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED);...}

这个就纯粹是mtk的问题,导入的时候全部设置成禁止合并了。

其它

1. 从代码和日常使用来看,同名联系人聚合的情况只有一种,就是批量导入联系人的时候(还得是非mtk的手机,mtk貌似把合并全关了)。

2. packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/AbstractContactAggregator.java

    public final void setEnabled(boolean enabled) {mEnabled = enabled;}

AbstractContactAggregator中有个禁止或开启聚合的方法,我见过有的代码把这个直接就设置成false的....不过这个要关闭了CTS铁定是过不去的。

Android聚合无效的问题相关推荐

  1. android:showAsAction 无效

    我想要的效果 但actionbar上的搜索菜单不显示 在androidstudio里,android:showAsAction="always"标红 根据提示,需要加入 xmlns ...

  2. android聚合社交通讯录app,这5款APP让你抛弃手机自带通讯录

    或许,真的到了抛弃手机自带通讯录的时候了.除了昨天介绍的Contaqs,市场上功能丰富又智能.且操作简单的通讯录应用真的不少,下面就再向大家推荐5款iOS和Android平台上比较好的通讯录应用.即便 ...

  3. Android marginright 无效的解决办法

    1.如果LinearLayout中使用android:layout_marginRight不起作用,通过测试原来在android2.x中,如果一个控件中有android:layout_gravity属 ...

  4. Android聚合SDK母包反编译出包教程

    文章目录 [前言] 一.SDK预处理 1.SDK资源合并 1.1.合并res目录下的资源 1.2.合并libs目录 1.3.合并assets目录 1.4.合并AndroidManifest.xml 1 ...

  5. android聚合网站sdk,聚合数据Android SDK 全国加油站查询演示示例

    1. 聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2. 下载 聚合数据SDK,将开发包里的juhe_s ...

  6. android聚合天气,聚合数据Android SDK 天气查询演示示例

    1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的juhe ...

  7. ConstraintLayout子View android:minHeight 无效解决

    当父类是ConstraintLayout时 子view设置 android:layout_height="wrap_content"android:minHeight=" ...

  8. android:maxWidth无效

    android:maxWidth用过几次,之前有效,今天再用就无效了.其实是有两个注意点的,记录下: 1. android:adjustViewBounds="true" 2.an ...

  9. React Native android zIndex无效的解决办法

    开发APP的时候,用的要ios模拟器调试,开发完以后,发现在android上显示存在异常.原来zIndex在android上好像没有生效. 解决办法: 使用elevation在安卓下可以生效. ele ...

最新文章

  1. 【Python】while里面是负数时条件还为真吗?
  2. 用C++实现的壳(基础版)
  3. NB-IoT在智能农业中的示范应用
  4. c++获取子类窗口句柄位置_干货分享:用一百行代码做一个C/C++表白小程序,程序员的浪漫!...
  5. apache配置php后访问localhost出现403错误
  6. callable线程池示例_Java Callable Future示例
  7. 用AB对Webservice做压力测试
  8. JeffreyLynny版面,开版第一篇!!!
  9. Layout天线效应的产生原因以及解决方法
  10. Python chardet
  11. dx逆向建模步骤_产品温度的逆向建模的系统和方法与流程
  12. 处理0x0000007E和0x0000000A蓝屏
  13. Python通过xlwings自动化Excel-持续更新
  14. JVM中OOM和SOF的产生
  15. 如何统一设置或者修改Excel表格中图表样式
  16. 基于PHP+MySQL音乐相册网站的设计与实现
  17. 地球气候系统模式cesm的基本运行流程
  18. Linux C编程之十六 网络编程基础-socket
  19. 论文阅读:social lstm:Human Trajectory Prediction in Crowded Spaces
  20. Windows驱动_WSK驱动之二WSK的操作

热门文章

  1. 计算机休眠的意思,电脑休眠是什么意思,电脑休眠和睡眠有什么区别!
  2. RJM8L151S国产8051内核8位带加密算法MCU_替代STM8L151
  3. [C++/PTA] 2017final友元函数之全班同学的平均绩点
  4. Http协议:三次握手和四次挥手
  5. 一个出轨女人与佛的对话,说的很有道理!
  6. maven的pom 文件scope和exclusion标签
  7. linux cgroup 原理,Cgroup框架的实现
  8. fanuc机械手臂与基恩士视觉的通讯设定
  9. 【Halcon视觉】图像灰度变化
  10. linux源码安装iftop,【Linux 命令】iftop安装与简单使用