2

我一直在尝试从我的应用程序中启动默认联系人“添加联系人”活动以插入新联系人。我可以使用代码启动相同的

private void insert(){
        // Gets values from the UI
        String name = "GroupTest";
        String phone = "900000";
        String email = "test@gmail.com";

        String company = "test";
        String jobtitle = "testDeveloper";

        // Creates a new intent for sending to the device's contacts application
        Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);

        // Sets the MIME type to the one expected by the insertion activity
        insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);

        // Sets the new contact name
        insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);

        // Sets the new company and job title
        insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
        insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);

        /*
         * Demonstrates adding data rows as an array list associated with the DATA key
         */

        // Defines an array list to contain the ContentValues objects for each row
        ArrayList<ContentValues> contactData = new ArrayList<ContentValues>();

        /*
         * Defines the raw contact row
         */

        // Sets up the row as a ContentValues object
        ContentValues rawContactRow = new ContentValues();

        // Adds the account type and name to the row
        //rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
        //rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());

        // Adds the row to the array
        contactData.add(rawContactRow);

        /*
         * Sets up the phone number data row
         */

        // Sets up the row as a ContentValues object
        ContentValues phoneRow = new ContentValues();

        // Specifies the MIME type for this data row (all data rows must be marked by their type)
        phoneRow.put(
                ContactsContract.Data.MIMETYPE,
                ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
        );

        // Adds the phone number and its type to the row
        phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);

        // Adds the row to the array
        contactData.add(phoneRow);

        /*
         * Sets up the email data row
         */

        // Sets up the row as a ContentValues object
        ContentValues emailRow = new ContentValues();

        // Specifies the MIME type for this data row (all data rows must be marked by their type)
        emailRow.put(
                ContactsContract.Data.MIMETYPE,
                ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
        );

        // Adds the email address and its type to the row
        emailRow.put(ContactsContract.CommonDataKinds.Email.DATA, email);

        // Adds the row to the array
        contactData.add(emailRow);


        **ContentValues groupRow = new ContentValues();
        groupRow.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
                ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
        groupRow.put(ContactsContract.Groups.TITLE, "Test");
        groupRow.put(ContactsContract.Groups._ID, 14);


        contactData.add(groupRow);**

        /*
         * Adds the array to the intent's extras. It must be a parcelable object in order to
         * travel between processes. The device's contacts app expects its key to be
         * Intents.Insert.DATA
         */
        insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.PHONE, contactData);

        // Send out the intent to start the device's contacts app in its add contact activity.
        startActivity(insertIntent);
    }

为什么“添加联系人”活动未显示此处设置的组的任何指针。

4

0 回答 0