android2013. 7. 16. 11:18

안드로이드에서 연락처 즉, 전화번호부 목록을 가져오는 방법을 알려드리겠습니다.

방법은 Call Log 가져오는 방법과 유사합니다.

AndroidManifest.xml 에 퍼미션 추가

<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />


PhoneBook.java

    private Cursor getURI() 
    {
        // 주소록 URI        
        Uri people = Contacts.CONTENT_URI;
        
        // 검색할 컬럼 정하기
        String[] projection = new String[] { Contacts._ID, Contacts.DISPLAY_NAME, Contacts.HAS_PHONE_NUMBER };
        
        // 쿼리 날려서 커서 얻기
        String[] selectionArgs = null;
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";    

        // managedquery 는 activity 메소드이므로 아래와 같이 처리함
        return getContentResolver().query(people, projection, null, selectionArgs, sortOrder);
        // return managedQuery(people, projection, null, selectionArgs, sortOrder);
    }

    public void phoneBook() {
        try {
            Cursor cursor = getURI();                    // 전화번호부 가져오기    

            int end = cursor.getCount();                // 전화번호부의 갯수 세기
            Logger.d("ANDROES", "end = "+end);

            String [] name = new String[end];    // 전화번호부의 이름을 저장할 배열 선언
            String [] phone = new String[end];    // 전화번호부의 이름을 저장할 배열 선언
            int count = 0;    

            if(cursor.moveToFirst()) 
            {
                // 컬럼명으로 컬럼 인덱스 찾기 
                int idIndex = cursor.getColumnIndex("_id");

                do 
                {
                    tempItem = new TempItem();
                    
                    // 요소값 얻기
                    int id = cursor.getInt(idIndex);        
                    String phoneChk = cursor.getString(2);
                    if (phoneChk.equals("1")) {
                        Cursor phones = getContentResolver().query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                null,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                        + " = " + id, null, null);

                        while (phones.moveToNext()) {
                            phone[count] = phones
                                    .getString(phones
                                            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        }        
                    }
                    name[count] = cursor.getString(1);

                    // 개별 연락처 삭제                    
                    // rowNum = getBaseContext().getContentResolver().delete(RawContacts.CONTENT_URI, RawContacts._ID+ " =" + id,null);

                    // LogCat에 로그 남기기
                    // Logger.i("ANDROES", "id=" + id +", name["+count+"]=" + name[count]+", phone["+count+"]=" + phone[count]);
                    count++;
                    
                } while(cursor.moveToNext() || count > end);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


출처 : http://www.androes.com/143

Posted by 광포한곰돌이
android2013. 7. 3. 11:35

일단 현재 위치를 받기위해선  GeolocationPermissions.Callback를 implements 시킨다

( public class 클래스명 extends Activity implements GeolocationPermissions.Callback )


웹뷰 세팅 부분

WebSettings setting = web.getSettings();

setting.setJavaScriptEnabled(true); // 웹뷰에서 자바스크립트 실행 가능

web.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

web.getSettings().setGeolocationEnabled(true);    // 현재위치 연결


String url = "연결 주소";

GeoClient geo = new GeoClient();

web.setWebChromeClient(geo);

String origin = ""; // how to get origin in correct format?

geo.onGeolocationPermissionsShowPrompt(origin, this); // obviously not how this is meant to be used but                 

  // expected usage not documented

web.loadUrl(url);




public void invoke(String origin, boolean allow, boolean remember) {


}


final class GeoClient extends WebChromeClient {


@Override

public void onGeolocationPermissionsShowPrompt(String origin,

Callback callback) {

// TODO Auto-generated method stub

super.onGeolocationPermissionsShowPrompt(origin, callback);

callback.invoke(origin, true, false);

}


}



출처 : http://stackoverflow.com/questions/2267513/using-navigator-geolocation-getcurrentposition-in-webview-on-android-2-0-phone

Posted by 광포한곰돌이
android2013. 7. 2. 17:54

안드로이드 작업을 하다보면 메니페스트 파일에 넣어야하는 User-permission 을 잊거나 생각이

안날경우가 있따. 그래서 일단 적어 놓는다.

</application> 밑에 추가할것 ㅋ

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

//위치정보 확인함
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

//위치정보 확인함

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

//wifi 연결을 확인함
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

//wifi 체인지를 확인함

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

//네트웍이 연결된것을 확인할수 있게함

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

//부팅완료를 확인할수있게함

<uses-permission android:name="android.permission.INTERNET"/>

// 인터넷을 사용함

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

// 외장메모리 사용

<uses-permission android:name="android.permission.RECODER_AUDIO"/>

//녹음이 가능하게 함

ACCESS_CHECKIN_PROPERTIES 체크인데이터베이스의_속성테이블로_액세스
ACCESS_COARSE_LOCATION 코스_로케이션_액세스_(Cell-ID/WiFi)
ACCESS_FINE_LOCATION 파인로케이션_액세스(GPS)
ACCESS_LOCATION_EXTRA_COMMANDS 로케이션_옵션_커맨드_액세스
ACCESS_MOCK_LOCATION 목_로케이션_프로바이더_생성_(테스트용)
ACCESS_NETWORK_STATE 네트워크_상태_접근
ACCESS_SURFACE_FLINGER 서피스_플링거_접근
ACCESS_WIFI_STATE WiFi상태_접근
ADD_SYSTEM_SERVICE 시스템서비스_추가
BATTERY_STATS 배터리_상태
BLUETOOTH 블루투스
BLUETOOTH_ADMIN 블루투스_어드민
BRICK 디바이스_실효성_지정
BROADCAST_PACKAGE_REMOVED 제거된_패키지에_대한_notification_브로드캐스트
BROADCAST_SMS SMS에_대한_브로드캐스트
BROADCAST_STICKY 인텐트_브로드캐스트
CALL_PHONE 통화
CALL_PRIVILEGED 통화(긴급전화_포함)
CAMERA 카메라
CHANGE_COMPONENT_ENABLED_STATE 컴포넌트의_실효성_변경
CHANGE_CONFIGURATION 컨피그_변경
CHANGE_NETWORK_STATE 통신상태_변경
CHANGE_WIFI_STATE WiFi상태_변경
CLEAR_APP_CACHE 어플리케이션_캐시_클리어
CLEAR_APP_USER_DATA 어플리케이션의_유저데이터_클리어
CONTROL_LOCATION_UPDATES 위치정보_갱신
DELETE_CACHE_FILES 캐시파일_제거
DELETE_PACKAGES 패키지_제거
DEVICE_POWER 전원상태에_대한_로우레벨_접근
DIAGNOSTIC 진단리소스_읽고쓰기
DISABLE_KEYGUARD 키_가드_끄기_DUMP_덤?
EXPAND_STATUS_BAR 상태표시줄_확장
FACTORY_TEST 팩토리_테스트
FLASHLIGHT 플래시라이트
FORCE_BACK 포스백
GET_ACCOUNTS 어카운트_획득
GET_PACKAGE_SIZE 패키지_획득
GET_TASKS 태스크_획득
HARDWARE_TEST 하드웨어테스트
INJECT_EVENTS 유저이벤트_키/트랙볼
INSTALL_PACKAGES 패키지_인스톨
INTERNAL_SYSTEM_WINDOW 내부_시스템윈도_활용
INTERNET 인터넷
MANAGE_APP_TOKENS 어플리케이션_토큰관리
MASTER_CLEAR 마스터_클리어
MODIFY_AUDIO_SETTINGS 오디오설정_편집
MODIFY_PHONE_STATE 전화상태_편집
MOUNT_UNMOUNT_FILESYSTEMS 파일시스템_편집
PERSISTENT_ACTIVITY 액티비티_지속
PROCESS_OUTGOING_CALLS 전화_발신처리_접근
READ_CALENDAR 캘린더_읽어오기
READ_CONTACTS 주소록_읽어오기
READ_FRAME_BUFFER 프레임버퍼_읽어오기
READ_INPUT_STATE 입력상태_읽어오기
READ_LOGS 로그_읽어오기
READ_OWNER_DATA owner_data읽어오기
READ_PHONE_STATE 통화상태_읽어오기_READ_SMS_SMS읽어오기
READ_SYNC_SETTINGS 동기설정_읽어오기
READ_SYNC_STATS 동기상태_읽어오기
REBOOT reboot
RECEIVE_BOOT_COMPLETED boot완료
RECEIVE_MMS MMS수신
RECEIVE_SMS SMS수신
RECEIVE_WAP_PUSH WAP수신
RECORD_AUDIO 오디오_수신
REORDER_TASKS 태스크_Z오더
RESTART_PACKAGES 패키지_리스타트
SEND_SMS SMS송신
SET_ACTIVITY_WATCHER 액티비티_왓쳐지정
SET_ALWAYS_FINISH 액티비티_전체_종료
SET_ANIMATION_SCALE 스케일_애니메이션_지정
SET_DEBUG_APP 디버그어플리케이션_지정
SET_ORIENTATION 스크린_로테이션지정
SET_PREFERRED_APPLICATIONS 자주_사용하는_어플리케이션_지정
SET_PROCESS_FOREGROUND 포어그라운드_처리지정
SET_PROCESS_LIMIT 제한처리_지정
SET_TIME_ZONE 타임존_지정
SET_WALLPAPER 배경화면_지정
SET_WALLPAPER_HINTS 배경화면_힌트_지정
SIGNAL_PERSISTENT_PROCESSES 지속처리_시그널_지정
STATUS_BAR 상태표시줄_지정
SUBSCRIBED_FEEDS_READ 서브스트립드_피즈_읽어오기
SUBSCRIBED_FEEDS_WRITE 서브스트립드_피즈_쓰기
SYSTEM_ALERT_WINDOW 알림_윈도우
VIBRATE 진동
WAKE_LOCK 알람
WRITE_APN_SETTINGS APN설정_쓰기
WRITE_CALENDAR 캘린더_쓰기
WRITE_CONTACTS 주소록_쓰기
WRITE_GSERVICES G서비스_쓰기
WRITE_OWNER_DATA owner_data쓰기
WRITE_SETTINGS 설정_쓰기
WRITE_SMS SMS쓰기
WRITE_SYNC_SETTINGS 동기설정_쓰기


출처 : http://javaexpert.tistory.com/329

Posted by 광포한곰돌이