2014-07-24 2 views
0

나는 앱을 만들고 있는데 사용자를위한 사진이있어 자동으로 가져 오려고합니다. 나는 이것을하는 방법이나 이것을하기위한 최선의 방법이 무엇인지에 대해 정말로 확신하지 못한다.메인 계정 사진 가져 오기

Google 계정 사진을 가져올 방법이 있습니까? 이것은 전 세계의 많은 사람들이 Google 계정을 전혀 가지고 있지 않을 수도 있다는 점을 고려할 때 가장 좋은 방법은 아닙니다.

ContactProvider에서 전화 사용자에 대한 기본 연락처가 있습니까? 그렇다면 어떻게 가져 오는지, 그리고 사진에 대해서는 어떻게 가지게됩니까? 죄송합니다. 코드가 없으므로 어디서부터 시작해야할지 모르겠으며 제안이나 링크를 통해 올바른 방향으로 나를 가리킬 수 있습니다.

내가

String[] mProjection = new String[] 
      { 
      Profile._ID, 
      Profile.DISPLAY_NAME_PRIMARY, 
      Profile.LOOKUP_KEY, 
      Profile.PHOTO_THUMBNAIL_URI 
      }; 

    // Retrieves the profile from the Contacts Provider 
    Cursor mProfileCursor = mContext.getContentResolver().query(
      Profile.CONTENT_URI, 
      mProjection , 
      null, 
      null, 
      null); 

    try { 
     if (mProfileCursor.moveToFirst()) { 
      byte[] data = mProfileCursor.getBlob(0); //error on this line 
      if (data != null) { 
       InputStream is = new ByteArrayInputStream(data); 
       imageBit = BitmapFactory.decodeStream(is); 
      } 
     } 
    } finally { 
     mProfileCursor.close(); 
    } 

내가 언급 한 줄에 오류가 계속 시도

좋아 코드 : nativeGetBlob

에 INTEGER 데이터 :

android.database.sqlite.SQLiteException : 알 수없는 오류 (코드 0)

편집 2 : 프로필 사진을 얻으려고 0에서 3으로 변경 했으므로 오류를 수정했지만 현재 스트림 디코딩에서 가져온 imageBit은 null입니다. 그러나 바이트 []는 문제가되어 바이트 []를 비트 맵으로 변환하는 것이 무엇인지 알 수 없습니다.

+1

0은 _ID입니다. 시도해보십시오. 3 그리고 Content Broker와이 URI를 MediaStore.Images.Media.getBitmap을 사용할 수 있도록 blob하지만 URI를 반환하지는 않을 것입니다. –

+0

그래, 그 진전을 만드는 것, 내 하나의 오류를 고정했지만 지금은 ImageBit 지금 스트림을 디코딩에서 얻을 null입니다. 바이트 []하지만 그래서 문제가 비트 [0]을 비트 맵으로 변환하는 것이 무엇인지 모르겠다. – BionicSheep

답변

1

내부 ContactsContract.Contacts 내부에 전화 소유자 전용 행이 있습니다.

READ_PROFILE 권한을 애플리케이션에 추가해야합니다.

// Sets the columns to retrieve for the user profile 
mProjection = new String[] 
    { 
     Profile.PHOTO_THUMBNAIL_URI 
    }; 

// Retrieves the profile from the Contacts Provider 
mProfileCursor = 
     getContentResolver().query(
       Profile.CONTENT_URI, 
       mProjection , 
       null, 
       null, 
       null); 

그런 다음 mProfileCursor을 사용하여 데이터를 가져 와서 표시하십시오.

자세한 내용은 here.

+0

은 그것을 시도하고 다시보고 할 것이다. – BionicSheep

+0

그래서 사진 데이터를 얻는 데 문제가있는 것 같다. 커서에서 – BionicSheep