안드로이드 개발 질문/답변
(글 수 45,052)
if (resultCode == Activity.RESULT_OK) {
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(contactUri,null, null, null, null);
if (cursor.moveToFirst()) {
for(int i = 0; i<cursor.getColumnCount(); i++){
if(cursor.getColumnName(i).equals("contact_id")){
contactID = Long.parseLong(cursor.getString(i));
}
}
}
cursor.close();
Cursor rawContacts = getContentResolver().query(Data.CONTENT_URI,new String[] {
Data.MIMETYPE,
Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4, Data.DATA5
},Data.RAW_CONTACT_ID + "=?", new String[] {String.valueOf(contactID)}, null);
rawContacts.moveToFirst();
if(!rawContacts.isAfterLast()){
do{
for(int i = 0; i<rawContacts.getColumnCount(); i++){
if(rawContacts.getString(i) != null){
if(rawContacts.getString(0).equals("vnd.android.cursor.item/name")){
if(rawContacts.getColumnName(1).equals("data1")){
name = "BEGIN:VCARD\n"
+"VERSION:2.1\n"
+"N:"+rawContacts.getString(1)+"\n"
+"FN:"+rawContacts.getString(1)+"\n";
option = rawContacts.getString(1);
if(getResources().getConfiguration().locale.getLanguage().equals("ko")){
try{
name = "BEGIN:VCARD\n"
+"VERSION:2.1\n"
+"N;CHARSET=EUC-KR;ENCODING=QUOTED-PRINTABLE:;"+MimeUtility.encodeText(rawContacts.getString(1).trim(),"EUC_KR","Q").substring(11,MimeUtility.encodeText(rawContacts.getString(1).trim(),"EUC_KR","Q").length()-2)+";\n"
+"FN;CHARSET=EUC-KR;ENCODING=QUOTED-PRINTABLE:"+MimeUtility.encodeText(rawContacts.getString(1).trim(),"EUC_KR","Q").substring(11,MimeUtility.encodeText(rawContacts.getString(1).trim(),"EUC_KR","Q").length()-2)+";\n";
for(int a = 0 ; a < rawContacts.getString(1).length() ; a++)
{
char ch = rawContacts.getString(1).charAt(a);
Character.UnicodeBlock unicodeBlock = Character.UnicodeBlock.of(ch);
if(unicodeBlock.toString().equals("BASIC_LATIN")){
englishCount1++;
isEnglish1 = false;
}
if(englishCount1 == a){
isEnglish1 = true;
}
}
if(isEnglish1){
name = "BEGIN:VCARD\n"
+"VERSION:2.1\n"
+"N:"+rawContacts.getString(1)+"\n"
+"FN:"+rawContacts.getString(1)+"\n";
}
}catch(Exception e){
e.printStackTrace();
name = "BEGIN:VCARD\n"
+"VERSION:2.1\n"
+"N:"+rawContacts.getString(1)+"\n"
+"FN:"+rawContacts.getString(1)+"\n";
}
}
}
}
if(rawContacts.getString(0).equals("vnd.android.cursor.item/phone_v2")){
if(rawContacts.getColumnName(2).equals("data2")){
if(rawContacts.getString(2).equals("2")){
phon = "TEL;TYPE=CELL;TYPE=VOICE:"+rawContacts.getString(1)+"\n";
}else if(rawContacts.getString(2).equals("3")){
work_tel = "TEL;TYPE=WORK;TYPE=VOICE:"+rawContacts.getString(1)+"\n";
}else if(rawContacts.getString(2).equals("4")){
work_fax = "TEL;TYPE=WORK;TYPE=FAX;TYPE=VOICE:"+rawContacts.getString(1)+"\n";
}
}
}
if(rawContacts.getString(0).equals("vnd.android.cursor.item/email_v2")){
if(rawContacts.getColumnName(2).equals("data2")){
if(rawContacts.getString(2).equals("2")){
email = "EMAIL;TYPE=WORK:"+rawContacts.getString(1)+"\n";
}
}
}
if(rawContacts.getString(0).equals("vnd.android.cursor.item/postal-address_v2")){
if(rawContacts.getColumnName(2).equals("data2")){
if(rawContacts.getString(2).equals("2")){
aor = "ADR;TYPE=WORK:"+rawContacts.getString(1)+"\n";
DebugLog.d(rawContacts.getString(1));
if(getResources().getConfiguration().locale.getLanguage().equals("ko")){
try
{
aor = "ADR;ENCODING=QUOTED-PRINTABLE;CHARSET=EUC-KR:"+MimeUtility.encodeText(rawContacts.getString(1),"EUC_KR","Q").substring(11,MimeUtility.encodeText(rawContacts.getString(1),"EUC_KR","Q").length()-2).replace("?= =?EUC_KR?Q?", ";").replace("_", "")+";;;\n";
for(int a = 0 ; a < rawContacts.getString(1).length() ; a++)
{
DebugLog.e(englishCount2+"///////"+a);
char ch = rawContacts.getString(1).charAt(a);
Character.UnicodeBlock unicodeBlock = Character.UnicodeBlock.of(ch);
if(unicodeBlock.toString().equals("BASIC_LATIN")){
englishCount2++;
isEnglish2 = false;
}
if(englishCount2 == a){
isEnglish2 = true;
}
}
if(isEnglish2){
aor = "ADR;ENCODING=QUOTED-PRINTABLE;CHARSET=EUC-KR:"+MimeUtility.encodeText(rawContacts.getString(1),"EUC_KR","Q").substring(11,MimeUtility.encodeText(rawContacts.getString(1),"EUC_KR","Q").length()-2)+";;;\n";
}
}
catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
aor = "ADR;ENCODING=QUOTED-PRINTABLE;CHARSET=EUC-KR:"+MimeUtility.encodeText(rawContacts.getString(1),"EUC_KR","Q").substring(11,MimeUtility.encodeText(rawContacts.getString(1),"EUC_KR","Q").length()-2)+";;;\n";
}
}
}
}
}
}
break;
}
}while(rawContacts.moveToNext());
}
rawContacts.close();
}
이런식으로 주소록을 뽑아오고있습니다.
그런데 이건 구글문제인지 아니면 뽑아오는게 잘못되고있는건지 ㄱ-
값을 못뽑아오는 경우도있고 뽑아오는경우도있고 그러더라구요...
근데 그기준이 명확하게 서버리지도않으니 ...
뭐가문제인지도 모르겠구요
뽑아오는방식은 문제없는것같기도하고...
이게느낌이 칼럼이 하나씩밀린기분이랄까요??
아니면 주소록엔보이지만 칼럼이 삭제됫다고봐야하나...
맨위에있는걸 클릭하면 값을 못가져오는데
2번째를 클릭하면 맨위에있는 값을가져옵니다.
그래서 칼럼이 밀렸구나 생각했는데
또 어떤건 정상적으로 가져오구요....
어떤문제인지 모르겠습니다 ㅠㅠ



