gpt4 book ai didi

android - 插入新的联系 Intent

转载 作者:IT王子 更新时间:2023-10-28 23:27:10 25 4
gpt4 key购买 nike

对于我的一个应用,我需要用户选择他现有的联系人之一或创建一个新联系人。使用以下代码显然很容易选择一个:

i = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(i, PICK_CONTACT_REQUEST );

现在我想创建一个新联系人。我尝试使用该代码,但它不会触发 Activity 结果:

i = new Intent(Intent.ACTION_INSERT);
i.setType(Contacts.CONTENT_TYPE);
startActivityForResult(i, PICK_CONTACT_REQUEST);

以上代码将启动联系人添加表单。然后当我验证它时,它只是要求我打开联系人列表,并且永远不会触发 onActivityResult 方法。

你能帮我让它工作吗?

我在一些板上读到这是不可能的,我必须创建自己的联系人添加表单。你能确认一下吗?

编辑:问题已解决。检查我的答案。

最佳答案

您可以选择是否要自动添加联系人,或者使用预先填写的数据打开添加联系人 Activity :

/**
* Open the add-contact screen with pre-filled info
*
* @param context
* Activity context
* @param person
* {@link Person} to add to contacts list
*/
public static void addAsContactConfirmed(final Context context, final Person person) {

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);

intent.putExtra(ContactsContract.Intents.Insert.NAME, person.name);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, person.mobile);
intent.putExtra(ContactsContract.Intents.Insert.EMAIL, person.email);

context.startActivity(intent);

}

/**
* Automatically add a contact into someone's contacts list
*
* @param context
* Activity context
* @param person
* {@link Person} to add to contacts list
*/
public static void addAsContactAutomatic(final Context context, final Person person) {
String displayName = person.name;
String mobileNumber = person.mobile;
String email = person.email;

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build());

// Names
if (displayName != null) {
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
displayName).build());
}

// Mobile Number
if (mobileNumber != null) {
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobileNumber)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build());
}

// Email
if (email != null) {
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, email)
.withValue(ContactsContract.CommonDataKinds.Email.TYPE,
ContactsContract.CommonDataKinds.Email.TYPE_WORK).build());
}

// Asking the Contact provider to create a new contact
try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
e.printStackTrace();
}

Toast.makeText(context, "Contact " + displayName + " added.", Toast.LENGTH_SHORT)
.show();
}

关于android - 插入新的联系 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14278587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com