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

我想要将我的 Android应用程序连接添加到联系人中.我将根据我需要在现有联系人中添加连接的结果来检查用户是否正在使用我的应用程序.

我已经采取了很多参考,但它添加一个新的联系添加连接.我使用的样本之一是here

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

我可以创建在手机的设置菜单中可见的帐户.

解决方法

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

> addContact()删除具有您的包的帐户类型的所有联系人,因此您必须添加删除该特定联系人的更多条件.
>您必须添加添加到现有联系人中的详细信息,您希望在其中添加您的帐户,即联系电话或电子邮件或姓名等.

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,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,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();
        }
    }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...