在Android中使用Intent添加联系人

时间:2016-05-09 10:10:07

标签: android

我正在创建一个应用程序,用户可以将应用程序中的用户添加到他的联系人中。

Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, bean.getMobileNo());
intent.putExtra(ContactsContract.Intents.Insert.NAME, bean.getName());
intent.putExtra(ContactsContract.Intents.Insert.EMAIL, bean.getEmailID());
startActivity(intent);

所以在添加联系人屏幕时添加它不是问题,如果用户按下后退按钮,即使用户不想保存联系人,联系人也会被保存。

我想使用Intent而不是通过app来做到这一点。有没有解决方案或具体设备?

3 个答案:

答案 0 :(得分:4)

试试这个

/ **  *打开带有预填信息的添加联系人屏幕  * /

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

intent.putExtra(ContactsContract.Intents.Insert.NAME, bean.getName());
intent.putExtra(ContactsContract.Intents.Insert.PHONE, bean.getMobileNo());
intent.putExtra(ContactsContract.Intents.Insert.EMAIL, bean.getEmailID());

context.startActivity(intent);

答案 1 :(得分:0)

试试这个,

// Declare
static final int PICK_CONTACT = 1;

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);

startActivityForResult(intent, PICK_CONTACT);

//code 
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);

    switch (reqCode) {
        case (PICK_CONTACT):
            if (resultCode == Activity.RESULT_OK) {

                Uri contactData = data.getData();
                Cursor c = managedQuery(contactData, null, null, null, null);
                if (c.moveToFirst()) {
                    String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

                    String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                    if (hasPhone.equalsIgnoreCase("1")) {
                        Cursor phones = getContentResolver().query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,
                                null, null);
                        phones.moveToFirst();
                        cNumber = phones.getString(phones.getColumnIndex("data1"));
                        System.out.println("number is:" + cNumber);
                    }
                    String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));


                }
            }
            break;
    }
}

这可能对你有所帮助。

答案 2 :(得分:0)

如果我理解你的帖子,问题是无论用户是否想要添加联系人,无论如何都会添加联系信息。

正如我注意到的那样,您已经在调用startActivity(intent),这会保存联系人。如果用户已经批准/验证他想要添加联系人,则只运行startActivity(intent)。我建议使用Dialog进行确认。如果用户接受,请运行startActivity(intent),否则,请忽略该操作。像这样:

        if (true){ // user accepts
            Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
            intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
            intent.putExtra(ContactsContract.Intents.Insert.PHONE, bean.getMobileNo());
            intent.putExtra(ContactsContract.Intents.Insert.NAME, bean.getName());
            intent.putExtra(ContactsContract.Intents.Insert.EMAIL, bean.getEmailID());
            startActivity(intent);
        } else {
            // your code here.
        }

我认为这个post也可能对您有用。干杯! :d