반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 우선순위큐
- 몰입캠프
- 궁동
- MySQL
- computergraphics
- 자바스크립트
- 후기
- 자바
- BFS
- 몰입캠프후기
- DP
- 프래그먼트
- glfw
- 위상정렬
- 분리집합
- 백준
- 알고리즘
- node.js
- 리사이클러뷰
- 어은동맛집
- 카이스트
- 타입스크립트
- 프로그래머스
- 대전맛집
- 안드로이드스튜디오
- nodeJS
- 컴퓨터그래픽스
- 카이스트맛집
- 앱개발
- html
Archives
- Today
- Total
소근소근
안드로이드 스튜디오 휴대폰 주소록 불러오기 [AndroidStudio-JAVA] 본문
728x90
반응형
SMALL
<uses-permission android:name="android.permission.READ_CONTACTS"/>
먼저, AndroidManifest.xml에 이렇게 추가한다. 권한 설정을 하기 위해서이다.
이렇게 하고 실행해도 에러가 떠서 보았더니, 휴대폰 설정에서 앱에서 주소록 권한 허용을 따로 해주었더니 제대로 실행되었다.
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI , null ,null, null, null);
if(cur.getCount()>0){
String line = "";
while(cur.moveToNext()){
int id = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts._ID));
line = String.format("%4d",id);
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
line += " " + name;
if(("1").equals(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))) {
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[]{String.valueOf(id)}, null);
int i = 0;
int pCount = pCur.getCount();
String[] phoneNum = new String[pCount];
String[] phoneType = new String[pCount];
while (pCur.moveToNext()) {
phoneNum[i] = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
line += " " + phoneNum[i];
phoneType[i] = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
i++;
}
}
numbook.add(line);
line ="";
}
}
주소록 데이터를 numbook 리스트에 저장하는 코드
안드로이드에서 앱 간의 데이터를 접근하기 위해서 content provider가 필요하다.
컨텐트 프로바이더(content provider)는 앱 간의 데이터 공유를 위해 사용된다.
특정 앱이 다른 앱의 데이터에 직접 접근하는 것이 아니라, 컨텐트 프로바이더를 통해 접근하는 것이다.
URI를 이용하여 컨텐트 리졸버(content resolver)를 통해 다른 앱의 컨텐트 프로바이더에게 데이터를 요청하면 데이터를 받을 수 있다. 프로바이더는 URIO를 확인하고, 데이터를 리졸버에게 제공하는 구조이다.
728x90
반응형
LIST
'AndroidStudio' 카테고리의 다른 글
EditText 입력 시 키보드 화면 밀림 현상 해결[AndroidStudio-JAVA] (0) | 2021.07.05 |
---|---|
TabLayout , ViewPager2 , fragment로 탭 구조 구현하기 [AndroidStudio-JAVA] (0) | 2021.07.05 |
휴대폰 주소록 사진 불러오기(비트맵Bitmap, ImageView) [AndroidStudio-JAVA] (0) | 2021.07.05 |
이미지뷰(ImageView) 안보이는 현상 해결[AndroidStudio-JAVA] (0) | 2021.07.05 |
리사이클러뷰(RecyclerView)에서 클릭(click)이벤트 처리[AndroidStudio-JAVA] (0) | 2021.07.04 |