问题描述
- 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);
因为有个别的手机系统定制,不能完全分开,但是应该兼容大部分手机
解决方案四:
最后回答的通过增加一些过滤条件,能否实现你需要的只获取手机本地的联系人的效果?
上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!