안드로이드 개발 질문/답변
(글 수 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번째를 클릭하면 맨위에있는 값을가져옵니다.
그래서 칼럼이 밀렸구나 생각했는데
또 어떤건 정상적으로 가져오구요....
어떤문제인지 모르겠습니다 ㅠㅠ