2014-10-08 5 views
2

연락처 목록에서 일부 연락처의 주소를 가져와야합니다. READ_CONTACTS 권한을 사용하지 않고 연락처의 주소를 찾는 방법은 무엇입니까?

  Cursor cursor = getContentResolver().query(contactDataUri, null,null, null, null); 

      StringBuilder address = new StringBuilder(); 

      if (cursor != null && cursor.moveToFirst()) { 
       // read street 
       int streetIndex =  cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET); 
       String street = cursor.getString(streetIndex); 
       // read city etc ..... 

      } 

는이 코드가 작성

를 기반으로했다 : onActivityResult에 결과를 수신

  Intent intent = new Intent(Intent.ACTION_PICK); 
      intent.setType(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_TYPE);     
      startActivityForResult(intent, ActivitiesRequestCodes.REQUEST_CODE_PICK_CONTACT); 

, 나는 연락처의 주소를 얻기 위해 결과를 분석 : 나는 그렇게하기 위해 ACTION_PICK 의도를 사용 : onActivityResult() 콜백에 전달 된 결과 Intent에는 선택한 연락처 데이터를 가리키는 content : URI가 포함되어 있습니다. 이 응답은 앱에 READ_CONTACTS 권한이없는 경우에도 해당 연락처 데이터를 읽을 수 있도록 앱에 임시 사용 권한을 부여합니다. (http://developer.android.com/guide/components/intents-common.html#Contacts)

모든 것이 삼성 기기에서 완벽하게 작동하지만 깜짝 선물! 이 java.lang.SecurityException :에 의한

: htc의 장치에서 구문 분석 코드는 보안 예외와 충돌 권한 거부 : 읽기 com.android.providers.contacts.HtcContactsProvider2 URI 내용 : //com.android.contacts/data를/1478 from pid = 11661, uid = 10197 필요 android.permission.READ_CONTACTS 또는 grantUriPermission()

다음에 할 일? READ_CONTACTS 권한을 사용하면 안됩니다. 어떤 아이디어라도 감사 할 것입니다. 당신이 권한을 추가하지 않고 연락처를 얻을 것이다 연락 선택기에서

감사

+1

당신은 허가없이 그것을 할 수 없습니다보십시오. "아무것도하지 마세요"가 더 좋습니다. 권한을 사용하는 동안 문제가 발생합니까? –

+1

권한이 필요합니다 .. HTC android version ?? –

+0

'나는 READ_CONTACTS 권한을 사용하면 안됩니다'이것은 NONSENSE입니다 : ** 당신은 ** 그 권한을 사용해야합니다. –

답변

0

이 코드

Cursor cursor = null; 
    try { 
     // getData() method will have the Content Uri of the selected contact 
     Uri uri = data.getData(); 
     //Query the content uri 
     String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME}; 
     cursor = context.getContentResolver().query(uri, projection, null, null, null); 
     cursor.moveToFirst(); 
    } catch (Exception e) { 
    }