如何在Whatsapp和Viber的电话簿/联系人中添加我的应用程序连接?

时间:2015-07-09 14:06:11

标签: android contacts whatsapp connection

enter image description here

我希望在联系人中添加我的Android应用连接。我将检查用户是否正在使用我的应用,根据我需要在现有联系人中添加连接的结果。

我已经采用了很多参考,但它添加了一个添加连接的新联系人。我使用过的一个示例是here

那么有人能告诉我在现有联系人中添加帐户的程序是什么?

我可以创建帐户,这可以在手机的设置菜单中看到。

1 个答案:

答案 0 :(得分:6)

我也使用本教程,但您需要进行的一项更改是addContact() 在本教程中,您更喜欢,您必须更改以下代码。

  1. addContact()会删除包含您帐户类型的所有联系人,因此您必须添加删除该特定联系人的更多条件。

  2. 您必须添加已在现有联系人中添加的详细信息,以便添加您的帐户,即联系电话或电子邮件或姓名等。

  3. public static void addContact(Context context, MyContact contact) {
            ContentResolver resolver = context.getContentResolver();
             // add condition that you want to check
            String where= RawContacts.ACCOUNT_TYPE + " = ? AND " +RawContacts.DISPLAY_NAME_PRIMARY+"=?";
            //values of that condotion
            String[] value=new String[] { AccountGeneral.ACCOUNT_TYPE ,contact.name};
            resolver.delete(RawContacts.CONTENT_URI, where, value);
    
            ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    
            ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(RawContacts.CONTENT_URI, true))
                    .withValue(RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME)
                    .withValue(RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE)
                    //.withValue(RawContacts.SOURCE_ID, 12345)
                    //.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED)
                    .build());
    
            ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Settings.CONTENT_URI, true))
                    .withValue(RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME)
                    .withValue(RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE)
                    .withValue(Settings.UNGROUPED_VISIBLE, 1)
                    .build());
    
            ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
                    .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
                    .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
                    .withValue(StructuredName.GIVEN_NAME, contact.name) 
                    .withValue(StructuredName.FAMILY_NAME, contact.lastName) 
                    .build()); 
    
            ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
                    .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
                    .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "12342145")
    
                    .build());
    
    
            ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
                     .withValueBackReference(Data.RAW_CONTACT_ID, 0)
                     .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                     .withValue(ContactsContract.CommonDataKinds.Email.DATA, "sample@email.com")
                     .build());     
    
    
            ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true))
                    .withValueBackReference(Data.RAW_CONTACT_ID, 0)
                    .withValue(Data.MIMETYPE, MIMETYPE)
                    .withValue(Data.DATA1, 12345)
                    .withValue(Data.DATA2, "sample")
                    .withValue(Data.DATA3, "sample")
                    .build());
            try {
                ContentProviderResult[] results = resolver.applyBatch(ContactsContract.AUTHORITY, ops);
                i++;
                if (results.length == 0)
                    ;
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }