最初的设计将默认SDN单独分出来,副标题"SDN"。

下面的变化可以通过例如实现SDN并安排普通相同数量在一起,按字母顺序排列。





DefaultContactListAdapter.java 的 configureSelection() 方法中

对 selection 为 IS_SDN_CONTACT + " < 1" 的例如以下语句注解掉(总共同拥有五处):

/**

     * M: New Feature SDN <br>

     * Origin code: <br>

     * private void configureSelection(<br>

     * @{

     */

    protected void configureSelection(

            CursorLoader loader, long directoryId, ContactListFilter filter) {

        if (filter == null) {

            return;

        }

        if (directoryId != Directory.DEFAULT) {

            return;

        }

        StringBuilder selection = new StringBuilder();

        List<String> selectionArgs = new ArrayList<String>();

        switch (filter.filterType) {

            case ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS: {

                // We have already added directory=0 to the URI, which takes care of this

                // filter

                /** M: New Feature SDN @{ */

// 1           selection.append(RawContacts.IS_SDN_CONTACT + " < 1");

                selection.append(RawContacts.IS_SDN_CONTACT + " < 2");

                /** @} */

                break;

            }

            case ContactListFilter.FILTER_TYPE_SINGLE_CONTACT: {

                // We have already added the lookup key to the URI, which takes care of this

                // filter

                break;

            }

            case ContactListFilter.FILTER_TYPE_STARRED: {

                selection.append(Contacts.STARRED + "!=0");

                break;

            }

            case ContactListFilter.FILTER_TYPE_WITH_PHONE_NUMBERS_ONLY: {

                selection.append(Contacts.HAS_PHONE_NUMBER + "=1");

                /** M: New Feature SDN @{ */

// 2           selection.append(" AND " + RawContacts.IS_SDN_CONTACT + " < 1");

                /** @} */

                break;

            }

            case ContactListFilter.FILTER_TYPE_CUSTOM: {

                selection.append(Contacts.IN_VISIBLE_GROUP + "=1");

                if (isCustomFilterForPhoneNumbersOnly()) {

                    selection.append(" AND " + Contacts.HAS_PHONE_NUMBER + "=1");

                }

                /** M: New Feature SDN @{ */

// 3           selection.append(" AND " + RawContacts.IS_SDN_CONTACT + " < 1");

                /** @} */

                break;

            }

            case ContactListFilter.FILTER_TYPE_ACCOUNT: {

                // We use query parameters for account filter, so no selection to add here.

                /** M: Change Feature: As Local Phone account contains null account and Phone

                 * Account, the Account Query Parameter could not meet this requirement. So,

                 * We should keep to query contacts with selection. @{ */

                if (AccountType.ACCOUNT_TYPE_LOCAL_PHONE.equals(filter.accountType)) {

                    selection.append("EXISTS ("

                                    + "SELECT DISTINCT " + RawContacts.CONTACT_ID

                                    + " FROM view_raw_contacts"

                                    + " WHERE ( ");

// 4               selection.append(RawContacts.IS_SDN_CONTACT + " < 1 AND ");

                    selection.append(RawContacts.CONTACT_ID + " = " + "view_contacts."

                            + Contacts._ID

                                    + " AND (" + RawContacts.ACCOUNT_TYPE + " IS NULL "

                                    + " AND " + RawContacts.ACCOUNT_NAME + " IS NULL "

                                    + " AND " +  RawContacts.DATA_SET + " IS NULL "

                                    + " OR " + RawContacts.ACCOUNT_TYPE + "=? "

                                    + " AND " + RawContacts.ACCOUNT_NAME + "=?

");

                } else {

                    selection.append("EXISTS ("

                                    + "SELECT DISTINCT " + RawContacts.CONTACT_ID

                                    + " FROM view_raw_contacts"

                                    + " WHERE ( ");

// 5               selection.append(RawContacts.IS_SDN_CONTACT + " < 1 AND ");       

                    selection.append(RawContacts.CONTACT_ID + " = " + "view_contacts."

                            + Contacts._ID

                                    + " AND (" + RawContacts.ACCOUNT_TYPE + "=?"

                                    + " AND " + RawContacts.ACCOUNT_NAME + "=?");

                }

                selectionArgs.add(filter.accountType);

                selectionArgs.add(filter.accountName);

                if (filter.dataSet != null) {

                    selection.append(" AND " + RawContacts.DATA_SET + "=? )");

                    selectionArgs.add(filter.dataSet);

                } else {

                    selection.append(" AND " +  RawContacts.DATA_SET + " IS NULL )");

                }

                selection.append("))");

                /** @} */

                break;

            }

        }

        /// M: Log the selection string.

        Log.d(TAG, "[configureSelection] selection: " + selection.toString());

        loader.setSelection(selection.toString());

        loader.setSelectionArgs(selectionArgs.toArray(new String[0]));

    }

版权声明:本文博客原创文章。博客,未经同意,不得转载。

android 如何将电话簿SDN数字和其他普通的数字混合在一起?的更多相关文章

  1. 如何使用alt键+数字键盘上的数字键打出特殊符号

    如何使用alt键+数字键盘上的数字键打出特殊符号 有时当我需要画示意图说明一个问题,但是苦于没有合适的符号,因此,这篇博文将简单介绍一些特殊的符号方便自己以及大家使用. 实现原理很简单:所有的字符(包 ...

  2. 写一个方法完成如下功能,判断从文本框textbox1输入的一个字符,如果是数字则求该数字的阶乘,如果是小写字条,则转换为大写,大写字符不变,结果在文本框textbox2中显示

    窗体设计: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  3. Swift语言指南(五)--数字字面量和数字类型转换

    原文:Swift语言指南(五)--数字字面量和数字类型转换 数字字面量 整数字面量写法如下: · 十进制数,无前缀 · 二进制数,以 0b 为前缀 · 八进制数,以 0o 为前缀 · 十六进制数,以 ...

  4. iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)

    项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...

  5. php生成随机字符串可指定纯数字、纯字母或者混合的

    php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...

  6. PHP金额工具类之将阿利伯数字转换为大写中文数字

    1.将阿拉伯数字转换为中文大写数字 <?php namespace core\components; class PriceHelper extends \yii\base\Component{ ...

  7. 随机总数字里面选取随机数字进行随机排序案例(JAVA实现)

    随机总数字里面选取随机数字进行随机排序案例,案例如下: 代码code: package com.sec; import java.util.Arrays; import java.util.Scann ...

  8. js玩转数字----取整,四舍五入,数字字符串转换

    取整: 向下取整Math.floor(),向上取整Math.ceil(),四舍五入Math.round()),保留有效数位n.toFixed(),产生大于等于0小于1的随机数Math.random() ...

  9. js 判断是不是数字||判断字符串是不是数字(正则表达式)

    js使用正则表达式判断对象是不是数字,或者字符串是不是数字,或者是不是数字类型 //判断是不是一个数字 或者 一个字符串里全是数字 isNumber (value) { if (value === u ...

随机推荐

  1. poj 3172 Scales 搜索

    其实这个题目要是注意到了题目的一点关键性的描述就会变得很简单,题意是给出的砝码是至少是前两个的和的,有了这一点,那么砝码的数量应该就在几十左右,这样的话适当剪枝的搜索是应该可以过的. #include ...

  2. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...

  3. SQLserver2012 tcp/ip 1433port问题解决方法

    非常多MSSQL安装完毕后,调用1433(默认port)是失败的,这边具体介绍下解决方法. 一..我们须要在电脑上开启telnet服务,定位问题须要.在cmd下使用telnet,假设报命令不存在说明没 ...

  4. cocos2d-x-3.0新建工程以及移植其他平台

    本文来自:http://www.zaojiahua.com/cocos2d-x-3-0.html 有将近俩个礼拜没有研究cocos2dx了,博主最近刷了些ACM的水题,越做感觉越没意思,这哪是考编程啊 ...

  5. 使用ReactiveCocoa实现iOS平台响应式编程

    使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...

  6. DWR异步产生的问题

    默认情况下,DRW是异步的.当数据量大的时候,数据还未加载完就已经提交了.这样会照成数据丢失.为了解决这个问题应该改变DWR的数据加载方式,改为同步的.这样就不会照成数据丢失. DWREngine.s ...

  7. HTML CSS——background的认识(一)

    今天回归bug时无意间看到了样式表中background属性,如今总结一下: 1.background-color:设置元素的背景色.其值能够为:color-name.color-rgb.color- ...

  8. u-boot TFTP: &#39;Access violation&#39; (2)

    今天做tftp下载时间会遇到以下问题. --->8--- Load address: 0x20000000 Loading: * TFTP error: 'Access violation' ( ...

  9. Hibernate Tomcat JNDI数据源配置(转)

    简述: 配置JNDI 查找Tomcat 中server.xml中定义的数据源 步骤: 1. 修改elipse的数据源server.xml 主要修改如下, 1. 添加下面这段Context文本 其中St ...

  10. 配置Tomcat的日志系统

    成功配置tomcat的log4j日志系统,格式:HTML+每天以yyyy-mm-dd.log命名的日志文件 一.引言: 实习单位让用log4j配置webapp的日志系统,要求产生的日志文件是html格 ...