Android 安卓:添加带有国家代码的联系人

Android 安卓:添加带有国家代码的联系人,android,Android,如何将电话号码添加到android通讯录中,包括相应的国家/地区代码 我有密码 private void addContact(Context context,String phone){ String DisplayName = "Programmer"; String MobileNumber = phone; String emailID = "coder@gmail.com"; String company = "Programmers Inc";

如何将电话号码添加到android通讯录中,包括相应的国家/地区代码

我有密码

private void addContact(Context context,String phone){

    String DisplayName = "Programmer";
    String MobileNumber = phone;
    String emailID = "coder@gmail.com";
    String company = "Programmers Inc";
    String jobTitle = "Duhhh";

    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 (emailID != 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, emailID)
                .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                .build());
    }

    //------------------------------------------------------ Organization
    if (!company.equals("") && !jobTitle.equals("")) {
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                .withValue(ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
                .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company)
                .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
                .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, jobTitle)
                .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
                .build());
    }

    // Asking the Contact provider to create a new contact
    try {
        context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
在我的电话簿中,联系人的电话号码已保存为+272762730xxx,国家代码重复

问题


如何确保手机不会猜测国家/地区代码并避免此重复。

如果您可以以+272xxxxxx格式获取电话号码,您可以通过设置除号码值外的标准化号码来强制识别此号码


根据Android文档,标准化的_编号应该是编号的E164表示形式。如果未设置,系统会尝试自动猜测。

我觉得手机可能猜不到国家代码。一定是别的地方出了什么事。因为你也可以储存一个没有国家代码的电话号码,所以你告诉他可以,但不是怎么储存?一个简单的代码片段可能会大有帮助。
addContact(this,"+27622730XXX"); // +27 is country code, 0622730XXX is my cell number