微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 如何在ContactsContract中创建用户配置文件?

我正在尝试在ContactsContract中创建一个用户配置文件…因为没有一个,我需要一个用于测试.我没有真实的Android设备,只有AVD模拟器进行测试.

这是我正在使用的代码块:

ArrayListedname.CONTENT_ITEM_TYPE)
    .withValue(Structuredname.disPLAY_NAME,name)
    .build());

this.getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);

如果删除用于使此条目成为用户配置文件的行,则它可以正常工作(即,将插入名称).但是,我无法弄清楚如何使用IS_USER_PROFILE标志设置条目.

您可以从应用程序创建用户配置文件吗?如果是这样,任何关于为什么这不起作用的想法?

非常感谢!
斯科特

最佳答案
@ozmank提供了一个很好的指针 – 考虑从针对API级别15-23的应用程序添加更新的工作示例

我在三星设备上遇到了这个问题 – 配置文件不存在,可以在存在时删除.

>为WRITE_PROFILE添加到AndroidManifest.xml使用权限

>创建属于配置文件的空原始联系人 – 这将生成配置文件条目

ContentValues values = new ContentValues();            
context.getContentResolver().insert(Profile.CONTENT_RAW_CONTACTS_URI,values);

从返回的Uri,您可以查询原始联系人条目.

注意 – 这不会向配置文件添加信息,因此如果您将使用查询信息的配置文件

Uri uri = Uri.withAppendedpath(Profile.CONTENT_URI,Contacts.Data.CONTENT_DIRECTORY);
Cursor cursor = context.getContentResolver().query(uri,null,null);

结果光标将为空,也许如果您决定再次在#2中运行代码并进入股票联系人应用程序,您将在Me配置文件下看到多个空条目 – 所以我的建议是将我的个人资料保留为尽可能清洁并跟踪您创建的原始联系人并检查它是否仍然有效 – 在创建新的原始联系人之前.

Uri uri = Uri.withAppendedpath(Profile.CONTENT_RAW_CONTACTS_URI,String.valueOf(lastLocalProfileManualRawId));
Cursor cursor = context.getContentResolver().query(uri,null);

if (cursor != null && cursor.getCount() > 0){
    // The profile exists
} else {
    // Create a new raw contact
}

原文地址:https://www.jb51.cc/android/430690.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐