2014-02-19 6 views
1

전화 연락처를 vcf 형식으로 sdcard에 내보내는 응용 프로그램이 있습니다.DataOutputStream (vcf 형식)에 저장하기 위해 사진이없는 전화 연락처 가져 오기

나는 모든 vCard를 얻을 커서가 계산 될 때까지 모든 ContactsContract.Contacts.LOOKUP_KEY -1 루핑 (A VCF 포맷으로 저장 수는 AssetFileDescriptor에서 각 연락처에 관한 vCard를 넣어하기 위해 도달 할 때입니다 getContentResolver(). openAssetFileDescriptor (....))를 사용하여 FileInputStream으로 변환됩니다. 문제는 이제 vCards 없이 저장해야한다는 것입니다.

그래서 어떤 아이디어를 얻으려면 사진없이을 외부 저장소에 vcf 형식으로 저장 하시겠습니까?

미리 감사드립니다

+0

저장하기 전에 기존 vCard의 비 사진 데이터를 빈 vcard로 복제 하시겠습니까? –

+0

@CeilingGecko가 당신의 아이디어를 얻지 못했습니다 – Nabz

+0

@AndroidNabs 저는 그가 모든 vcard에 대해 새로운 vcard를 만들고 모든 데이터를 복사해야한다는 것을 의미한다고 생각합니다. 그러나 그림과 새로운 vcard를 저장하십시오. –

답변

2

API 레벨 14 + 당신이 ContactsContract.java의 소스를 선택하면, 당신은 그들이 연락처 사진을 제외하는 새로운 방법을 도입 것을 볼 수 있습니다

.

/** 
* Boolean parameter that may be used with {@link #CONTENT_VCARD_URI} 
* and {@link #CONTENT_MULTI_VCARD_URI} to indicate that the returned 
* vcard should not contain a photo. 
* 
* @hide 
*/ 
public static final String QUERY_PARAMETER_VCARD_NO_PHOTO = "nophoto"; 

상수는 API (@hide)에서 숨겨져 있지만 여전히 활용할 수 있습니다. 14

귀하의 유일한 해결책은하는 것

String lookupKey = cursor.getString(
       cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); 
Uri vcardUri = ContactsContract.Contacts.CONTENT_VCARD_URI 
      .buildUpon().appendQueryParameter("nophoto", String.valueOf(true)) 
      .build(); 
Uri uri = Uri.withAppendedPath(vcardUri, lookupKey); 


사전 API 레벨 : 당신이 당신의 검색 키를 얻을 후

, 다음 코드를 사용하여 "nophoto"vCard를 열린 우리당를 얻을 수 있습니다 연락처 정보를 사용하여 vcard를 직접 만드십시오.

library이 도움이 될 수 있습니다.

+0

당신의 메소드가 매력처럼 작동한다면 API> 14에 "nophoto"매개 변수를 사용하고 외부 라이브러리를 사용하여 vcards를 처리하여 API <14를 처리 할 것입니다. 당신의 도움을 주셔서 감사합니다 – Nabz