2017-10-24 20 views
2

나는 한 가지 문제에 직면하고 있으며 인터넷에서 해결책을 얻지 못하고 있습니다. 모든 사용자 프로필 연락처를 나열 할 수 있지만 직장 프로필에서 연락처를 표시하지 않습니다.직장 프로필 연락처에서 검색을 수행하는 방법

작업 프로필에 대한 상세 내용은 아래 링크를 참조하시기 바랍니다 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 및 tomm을 모두 표시합니다. 내 구현에서 동일한 일이 발생합니다.

직장 프로필 연락처는 어떻게 받습니까?

+0

일 프로필과 경험 해결하지만, 한 가지 첫 번째 링크에서 내 눈을 사로 잡은 아래의 코드를 참조하십시오. "내 조직이 통제 할 수있는 것은 무엇입니까?"아래에는 "_ 개인 프로필과 직장 프로필에서 공유 할 수있는 것을 허락하십시오 _"가 있습니다. 이러한 제한 사항이 어떻게 작동하는지 모르겠지만 직장 프로필 연락처에 액세스 할 수있는 앱을 "화이트리스트"로 만드는 한 가지 방법 ("직장")이 있으며 그 목록에 앱이 없을 수도 있습니다. 네이티브 메시지 앱이있을 수 있습니다). 또한 작업 프로필을 해제하지 않았다고 가정 할 수 있습니까? – TripeHound

+0

직장 프로필을 사용 중지 한 적이 없으며 직장 프로필이 꺼져 있으면 (심지어 기본) 내 직장/직장/직장에 속한 콘텐츠/앱/주소록에 액세스 할 수 없습니다. – RQube

답변

0

내 문제

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; 
    }