我正在尝试插入新的RawContact联系人,但是RawContact当我通过"联系人"或电话簿查看联系人时,添加的内容无法显示.据我了解,如果我们创建了一个RawContact并且没有与之关联的联系人,那么将自动插入联系人.我得到一个有效的值,rawContactId并没有抛出异常,所以我假设插入成功.我做错了什么或者我错过了什么?我正在使用开发人员网站的代码示例,只需将其粘贴到此处:
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, accountType);
values.put(RawContacts.ACCOUNT_NAME, accountName);
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
values.put(StructuredName.DISPLAY_NAME, "Mike Sullivan");
getContentResolver().insert(Data.CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud) 有许多Q&A线程,但没有一个提供真正的答案,或者我找不到它.
为了确保你,我先问了一下:
那么有谁知道如何使用Intent(如示例代码中)并插入一个Photo,它是在Bitmap中保存的?
示例代码我现在用它来启动对话意图,让用户在保存之前插入或取消并可能编辑字段:
// PrivateContactClass c;
// Bitmap photo;
Intent inOrUp = new Intent(ContactsContract.Intents.Insert.ACTION, ContactsContract.Contacts.CONTENT_URI);
inOrUp.setType(ContactsContract.Contacts.CONTENT_TYPE);
inOrUp.putExtra(ContactsContract.Intents.Insert.NAME, ModelUtils.formatName(c));
inOrUp.putExtra(ContactsContract.Intents.Insert.PHONE, getPrimaryPhone());
inOrUp.putExtra(ContactsContract.Intents.Insert.TERTIARY_PHONE, c.getMobile());
inOrUp.putExtra(ContactsContract.Intents.Insert.EMAIL, c.getMail());
inOrUp.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, c.getFunction());
inOrUp.putExtra(ContactsContract.Intents.Insert.NOTES, getSummary());
inOrUp.putExtra(ContactsContract.Data.IS_SUPER_PRIMARY, 1);
startActivity(inOrUp);
Run Code Online (Sandbox Code Playgroud)
不仅仅使用intent,因为我怀疑我们可以传递Data ContentProvider保存的图像ID,或者直接在Intent中传递Bitmap.
从上面的代码扩展
// must be declared in class-context
private static final int CONTACT_SAVE_INTENT_REQUEST = 1;
...
startActivityForResult(inOrUp,CONTACT_SAVE_INTENT_REQUEST);
Run Code Online (Sandbox Code Playgroud)
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent); …Run Code Online (Sandbox Code Playgroud) android android-intent contactscontract android-image android-contentprovider
我需要使用Xamarin Forms / Android的意图以编程方式打开android Contacts应用程序。当出现“添加新联系人”活动/屏幕时,我想用以下字段预填充它:
如上所述,某些屏幕正在填充,但地址字段却没有。这是Xamarin C#Android代码/服务,用于触发打开Android“添加联系人”屏幕的活动:
public void AddContact(string name, string[] phoneNumbers, string streetAddress, string city, string state, string postalCode, CountryValues countrycode)
{
// get current activity
var activity = CrossCurrentActivity.Current.Activity;
// create add contact intent
var intent = new Intent(Intent.ActionInsert);
intent.SetType(ContactsContract.Contacts.ContentType);
// add field for contact name
intent.PutExtra(ContactsContract.Intents.Insert.Name, name);
// Adding more than on phone number if available
foreach (string numbers in phoneNumbers)
{
intent.PutExtra(ContactsContract.Intents.Insert.Phone, numbers);
}
// pre-populate address fields
intent.PutExtra(ContactsContract.CommonDataKinds.StructuredPostal.Street, …Run Code Online (Sandbox Code Playgroud)