What is the default Account Type / Name for contacts on Android Contact Application?

后端 未结 3 1811
感动是毒
感动是毒 2020-12-03 11:42

I would like to read contacts from ContactsContract API which belongs only to Phone / SIM and would like to avoid contacts synced from other apps like facebook and gmail. I

3条回答
  •  独厮守ぢ
    2020-12-03 11:49

    I couldn't find the way to get the SIM account yet. But I'm using the code below to get the default account name and type.

    public void getDefaultAccountNameAndType() {
        String accountType = "";
        String accountName = "";
    
        long rawContactId = 0;
        Uri rawContactUri = null;
        ContentProviderResult[] results = null;
    
        ArrayList ops = new ArrayList(); 
    
        ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI).withValue(RawContacts.ACCOUNT_NAME, null).withValue(RawContacts.ACCOUNT_TYPE, null).build());
    
        try {
            results = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            ops.clear();
        }
    
        for (ContentProviderResult result : results) {
            rawContactUri = result.uri;
            rawContactId = ContentUris.parseId(rawContactUri);
        }
    
        Cursor c = getContentResolver().query(
                RawContacts.CONTENT_URI
                , new String[] {RawContacts.ACCOUNT_TYPE, RawContacts.ACCOUNT_NAME}
                , RawContacts._ID+"=?"
                , new String[] {String.valueOf(rawContactId)}
                , null);
    
        if(c.moveToFirst()) {
            if(!c.isAfterLast()) {
                accountType = c.getString(c.getColumnIndex(RawContacts.ACCOUNT_TYPE));
                accountName = c.getString(c.getColumnIndex(RawContacts.ACCOUNT_NAME));
            }
        }
    
        getContentResolver().delete(rawContactUri, null, null);
    
        c.close();
        c = null;
    
        preference.setString("contactAccountType", accountType);
        preference.setString("contactAccountName", accountName);
    }
    

提交回复
热议问题