我面临一个问题,没有在互联网上找到解决方案。
我能够列出所有用户个人资料联系人,但未显示工作个人资料中的联系人。

请参考以下链接以获取有关工作资料的详细信息
 https://support.google.com/work/android/answer/6191949?hl=en
 https://support.google.com/work/android/answer/7029561?hl=en

`

private static final String[] PROJECTION =
        {
            Contacts._ID,
            Contacts.LOOKUP_KEY,
            Build.VERSION.SDK_INT
                    >= Build.VERSION_CODES.HONEYCOMB ?
                    Contacts.DISPLAY_NAME_PRIMARY :
                    Contacts.DISPLAY_NAME

        };

private static final String SELECTION =
            Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
            Contacts.DISPLAY_NAME_PRIMARY + " LIKE ?" :
            Contacts.DISPLAY_NAME + " LIKE ?";

@Override
    public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
        /*
         * Makes search string into pattern and
         * stores it in the selection array
         */
        mSelectionArgs[0] = "%" + mSearchString + "%";
        // Starts the query
        return new CursorLoader(
                getActivity(),
                Contacts.CONTENT_URI,
                PROJECTION,
                SELECTION,
                mSelectionArgs,
                null
        );
    }
`


例如:在正常的个人资料中,我有一个名为“ todd”的联系人,在我的工作资料下,我有一个“ tom”。现在在本机消息应用程序中进行撰写时,它同时显示todd和tomm。我希望在实现过程中也能做到这一点。

我应该如何获得工作资料联系人?

最佳答案

请参阅下面解决我的问题的代码

private static final String[] PROJECTION_ENTERPRISE = new String[]{
            ContactsContract.Contacts._ID,
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.DATA1,
            ContactsContract.CommonDataKinds.Phone.MIMETYPE,
            ContactsContract.CommonDataKinds.Phone.TYPE,
            ContactsContract.CommonDataKinds.Phone.LABEL
    };

    @RequiresApi(api = Build.VERSION_CODES.N)
        private Cursor getEnterpriseContact(String searchString, String[] cols, ContactSearchType mContactSearchType, String digits, String sortOrder) {
            // Get the ContentResolver
            ContentResolver cr = mContext.getContentResolver();
            // Get the Cursor of all the contacts
            Uri phoneUri = ContactsContract.CommonDataKinds.Phone.ENTERPRISE_CONTENT_FILTER_URI.buildUpon().appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(ContactsContract.Directory.ENTERPRISE_DEFAULT)).build();
            Uri phoneUriWithSearch = Uri.withAppendedPath(phoneUri, Uri.encode(searchString));
            Cursor pCursor = cr.query(phoneUriWithSearch, cols, null, null, sortOrder);
            Cursor workCur = null;
            if (mContactSearchType != ContactSearchType.CONTACT_WITH_PHONE_NO) {
                Uri emailUri = ContactsContract.CommonDataKinds.Email.ENTERPRISE_CONTENT_FILTER_URI.buildUpon().appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(ContactsContract.Directory.ENTERPRISE_DEFAULT)).build();
                Uri emailUriWithSearch = Uri.withAppendedPath(emailUri, Uri.encode(searchString));
                Cursor eCursor = cr.query(emailUriWithSearch, cols, null, null, sortOrder);
                workCur = new MergeCursor(new Cursor[]{pCursor, eCursor});
            } else {
                workCur=pCur;
            }
     return workCur;
    }

10-03 00:26