我想要将我的
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();
}
}