欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

根据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; 
    } 
}