根据RawContactID判断联系人来自手机还是SIM卡
程序员文章站
2024-03-02 19:40:28
...
private List<TxrjAccount> accounts = new ArrayList<TxrjAccount>();
private HashMap<Integer, TxrjAccount> accountMap = new HashMap<Integer, TxrjAccount>();
public AsyncQueryContacts(ContentResolver cr) {
super(cr);
initAccounts();
}
private void initAccounts() {
Cursor cursor = mContext.getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI,
new String[] {RawContacts._ID, RawContacts.ACCOUNT_NAME, RawContacts.ACCOUNT_TYPE },
null, null, null);
if (cursor != null) {
TxrjAccount account = null;
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(RawContacts._ID));
String name = cursor.getString(cursor.getColumnIndex(RawContacts.ACCOUNT_NAME));
String type = cursor.getString(cursor.getColumnIndex(RawContacts.ACCOUNT_TYPE));
account = new TxrjAccount(id, name, type);
accounts.add(account);
accountMap.put(id, account);
}
cursor.close();
}
}
//在AsyncQueryContacts.onQueryComplete()方法中。
if(contact.getPhoneList().size() == 1){
contact.setbSim(accountMap.get(phone.getRawContactId()).isSimAccount());
}
//在TxrjAccount类中。
public static final String PHONE_ACCOUNT_NAME = "vnd.sec.contact.phone";
public static final String PHONE_ACCOUNT_TYPE = "vnd.sec.contact.phone";
public static final String SIM2_ACCOUNT_NAME = "primary.sim2.account_name";
public static final String SIM2_ACCOUNT_TYPE = "vnd.sec.contact.sim2";
public static final String SIM_ACCOUNT_NAME = "primary.sim.account_name";
public static final String SIM_ACCOUNT_TYPE = "vnd.sec.contact.sim";
public boolean isSimAccount() {
if(type.equals(SIM_ACCOUNT_TYPE) || type.equals(SIM2_ACCOUNT_TYPE)) {
return true;
} else {
return false;
}
}