首页 > 其他分享 >android 如何将电话簿中SDN号码和其他普通号码混合放在一起?

android 如何将电话簿中SDN号码和其他普通号码混合放在一起?

时间:2023-03-11 13:31:33浏览次数:35  
标签:SDN selection 号码 RawContacts filter CONTACT 电话簿 android append


原始默认设计会将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]));

}

标签:SDN,selection,号码,RawContacts,filter,CONTACT,电话簿,android,append
From: https://blog.51cto.com/u_15170706/6114553

相关文章

  • 入门Android 四大开发组件学习
    一、Activity组件1、Activity相关概念介绍        一个Activity包含了用户能够看到的界面,从而于用户进行交互。一个应用程序中可以有零个或者多个Activity。零个......
  • 3月8号Android开发学习
    相对布局RelativeLayout相对布局的下级视图由其他视图决定,用于确定下级视图位置的参照物分两种:(1)与该视图自身平级的视图(2)该视图的上级视图如果不设定下级视图的参......
  • Android源码下载
      最近在做Monkey二次开发的工作,边弄边在这里记录下(多平台发布),顺便可以和大家一起讨论下; Monkey的编译依赖于Android源码,所以要修改Monkey后打新jar包,需要完整的Andr......
  • Xamarin.Forms.Android 中访问外部内存方法
    问题描述:我想生成一个Excel文件到 /storage/emulated/0/Download目录下,然后报错说访问路径被拒绝.解决方法:添加访问所有文件权限步骤1:  AndroidManifest.xm......
  • Android Studio打包jar
    这里打包的module是不含资源文件的librarybuild.gradle添加配置taskmakeJar(type:Copy){//删除存在的delete'build/libs/mylib.jar'//......
  • Android 使用opengles部分记录
    关于旋转和旋转轴参考:Android使用OpenGLES3.0实现随手指旋转3D立方体glm库https://github.com/g-truc/glm下载https://github.com/g-truc/glm/releases/download/0.......
  • androidstudio去掉更新提示
    Ctrl+shift+s打开设置......
  • 了解以下RFID(关于我Android端竞赛方面的)
    射频识别(RFID)是RadioFrequencyIdentification的缩写。无线射频识别即射频识别技术(RadioFrequencyIdentification,RFID),是自动识别技术的一种,通过无线射频方式进行非接......
  • Android Studio导航栏制作
    手机底部的“主页信息其他我的”这几个都是导航栏的属性,然后我今天想着制作这么一个导航栏,从“菜鸟教程”那边学习到要用Fragment这一个工具,这样我们就能实现,点击两个不......
  • 【Android 抓包对抗】客户端证书和域名校验绕过
    1.按照之前的方式(https://www.cnblogs.com/gradyblog/p/17197707.html)进行抓包发现证书校验失败SSLhandshakewithclientfailed:Anunknownissueoccurredprocessi......