android 只查手机里面的联系人

问题描述

android 只查手机里面的联系人

想问一个和Contact相关的问题,我用Phone.CONTENT_URI和ContactsContract.Contacts.CONTENT_URI这两个URI查出来的联系人都是手机和sim在一起的,我现在知道用Uri.parse("content://icc/adn");能查出sim卡得联系人,但是如果要只查手机里面的联系人该怎么办呢? 我现在只要读手机里面的联系人,SIM卡上的联系人不读,有人知道 么?

解决方案

多百度,/data/data/com.android.provider.contacts/databases/contacts2.db,Phone.CONTENT_URI

解决方案二:

参考 获取android所有联系人信息
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null,

null, null, null);

while (cursor.moveToNext()) {

ContactInfo cci = new ContactInfo();

//取得联系人名字

int nameFieldColumnIndex = cursor.getColumnIndex(People.NAME);

cci.contactName = cursor.getString(nameFieldColumnIndex);

//取得电话号码

int numberFieldColumnIndex = cursor.getColumnIndex(People.NUMBER);

cci.userNumber = cursor.getString(numberFieldColumnIndex);

cci.userNumber = GetNumber(cci.userNumber);

cci.isChecked = false;

if (IsUserNumber(cci.userNumber)) {

if (!IsContain(contactList, cci.userNumber)) {

if(IsAlreadyCheck(wNumStr, cci.userNumber)){

cci.isChecked = true;

numberStr += "," + cci.userNumber;

}

contactList.add(cci);

//Log.i("eoe", "*********"+cci.userNumber);

}

}

}

cursor.close();

}

解决方案三:

参考 android showing both sim and phone contacts
import android.provider.ContactsContract.RawContacts;

Cursor cursor = getContentResolver().query(
RawContacts.CONTENT_URI,
new String[] { RawContacts._ID, RawContacts.ACCOUNT_TYPE },
RawContacts.ACCOUNT_TYPE + " <> 'com.android.contacts.sim' AND "
+ RawContacts.ACCOUNT_TYPE + " <> 'com.anddroid.contacts.sim' AND " // HTC
+ RawContacts.ACCOUNT_TYPE + " <> 'vnd.sec.contact.sim' AND "
+ RawContacts.ACCOUNT_TYPE + " <> 'USIM Account' ",
null,
null);
因为有个别的手机系统定制,不能完全分开,但是应该兼容大部分手机

解决方案四:

最后回答的通过增加一些过滤条件,能否实现你需要的只获取手机本地的联系人的效果?
上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!

时间: 2024-09-19 09:12:28

android 只查手机里面的联系人的相关文章

android开发-双卡双待手机无法获取联系人姓名

问题描述 双卡双待手机无法获取联系人姓名 通过注册监听来电广播,单卡手机可以获取手机号码,进而得到联系人姓名.但双卡手机得到手机号码后,查表却得不到姓名.但挂断后又可以获取到联系人姓名,开始以为是重复查询才能获取,发现重复查询后还是不能得到,很费解 解决方案 获取手机联系人获取手机联系人信息

android-请问在Android开发中如何只获得手机桌面上的App列表

问题描述 请问在Android开发中如何只获得手机桌面上的App列表 我现在能够获得手机中安装的所有App列表,但我只想获得手机桌面上的App列表,请问应该如何解决? 解决方案 第一步:建立基本数据:PakageMod.java public class PakageMod { public String pakageName;//应用的包名 public String appName;//应用的名称 public Drawable icon;//应用图标 public PakageMod()

浅析Android手机卫士读取联系人_Android

推荐阅读: 浅析Android手机卫士sim卡绑定 深入浅析Android手机卫士保存密码时进行md5加密 详解Android 手机卫士设置向导页面 浅析Android手机卫士关闭自动更新 浅析Android手机卫士自定义控件的属性 获取ContentResolver内容解析器对象,通过getContentResolver()方法 调用ContentResolver对象的query()方法,得到raw_contacts表里面的数据,得到Cursor对象 参数:Uri对象,字段String数组 获

android在添加手机联系人(一个联系人多个号码)的时,当手机号码改变时,会生成另一个相同联系人

问题描述 android在添加手机联系人(一个联系人多个号码)的时,当手机号码改变时,会生成另一个相同联系人 //添加联系人名字 String target_name = name; values.put("raw_contact_id", contactId); values.put(ContactsContract.RawContacts.Data.MIMETYPE, "vnd.android.cursor.item/name"); values.put(&qu

浅析Android手机卫士读取联系人

推荐阅读: 浅析Android手机卫士sim卡绑定 深入浅析Android手机卫士保存密码时进行md5加密 详解Android 手机卫士设置向导页面 浅析Android手机卫士关闭自动更新 浅析Android手机卫士自定义控件的属性 获取ContentResolver内容解析器对象,通过getContentResolver()方法 调用ContentResolver对象的query()方法,得到raw_contacts表里面的数据,得到Cursor对象 参数:Uri对象,字段String数组 获

如何用android编程实现手机通过蓝牙SPP协议同时连接2个蓝牙设备A、B并同时读取A、B的数据?

问题描述 如何用android编程实现手机通过蓝牙SPP协议同时连接2个蓝牙设备A.B并同时读取A.B的数据? 任务:用android编程实现手机通过蓝牙SPP协议同时连接2个蓝牙设备A.B并同时读取A.B的数据. 我实现的方法:2个蓝牙设备A.B都是SPP server,手机是SPP client. 结果:可以把手机只配对连接A或B,读取数据.如果把手机与A.B都配对连接后,只读取A的数据,B没有反应. 分析:手机.A.B的uuid都是相同的,"00001101-0000-1000-8000-

Android编程实现手机拍照的方法详解_Android

本文实例讲述了Android编程实现手机拍照的方法.分享给大家供大家参考,具体如下: 今天弄了差不多一天手机拍照,后来,边弄边想,而且现在也不知道自己知道的这些对不对,首先,如果使用此种方式拍照的话,程序在模拟器中,刚启动就会出问题,不知道什么原因,猜可能是因为是模拟器的原因,目前没有手机进行测试,这一些无法解释,代码如下: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(in

Android模拟器实现手机添加文件到sd卡的方法_Android

本文实例讲述了Android模拟器实现手机添加文件到sd卡的方法.分享给大家供大家参考,具体如下: 在DDMS中直接添加文件到模拟器sd卡如果出现错误类似:Failed to push XXXXX.txt on emulator- : Read-only file system的错误,原因是你的sdcard权限不够,需要直接创建一个SDCARD . 一.首先创建SDCARD  我创建的sdcard名为:sdcard.img(名字随便取,以img后缀名结束)  进入DOS  指向  目录 E:\a

Android 如何获取手机总内存和可用内存等信息_Android

在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小. 这个该如何实现呢? 通过读取文件"/proc/meminfo"的信息能够获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)方法可以获取当前的可用Memory量.       "/proc/meminfo"文件记录了android手机的一些内存信息,在命令行窗口里输