안드로이드 Activity 실행 결과 받기

프로그래밍/Android 2013. 8. 29. 03:00

안드로이드 Activity 실행 결과 받기


카메라 앱을 실행 시킨후 사용자가 찍은 사진을 돌려받고 싶을 때, 또는 연락처에서 선택한 전화번호를 받고 싶을 때 

startActivityForResult() 를 사용하면 다른 앱에서 사용자가 선택한 결과를 받을 수 잇다.


샘플 코드

static final int PICK_CONTACT_REQUEST = 1;


private void pickContact(){

Intent pickContactIntent = new Intent( Intent.ACTION_PICK, Uri.parse("content://contacts"));

pickContactIntent.setType( Phone.CONTENT_TYPE);

        // PICK_CONTACT_REQUEST, requestCode 가 결과를 얻는데 사용된다.

startActivityForResult( pickContactIntent, PICK_CONTACT_REQUEST); 

}



사용자가 연락처를 선택하면 Activity 의 onActivityResult() 메소드가 호출된다.

protected void onActivityResult( int requestCode, int resultCode, Intent data){

// startActivityForResult 에서 넘긴 requestCode 를 체크한다.

if( requestCode == PICK_CONTACT_REQUEST){

if( resultCode == RESULT_OK){

}

}

}



사용자가 선택한 연락처 가져오는 코드

        @Override

protected void onActivityResult( int requestCode, int resultCode, Intent data){

if( requestCode == PICK_CONTACT_REQUEST){

if( resultCode == RESULT_OK){

                                // 선택한 결과는 Uri 리턴되며 해당 Uri 를 쿼리하여 얻어오게 된다.

Uri contactUri = data.getData(); 

String[] projection = {Phone.NUMBER};

                                // 주의 : UI 의 블락킹 때문에라도( 화면 버벅거림) 쿼리실행은 별도의 스레드에서 처리하는게 좋다. 

Cursor cursor = getContentResolver().query( contactUri, projection, null, null, null);

cursor.moveToFirst();

int column = cursor.getColumnIndex(Phone.NUMBER);

String number = cursor.getString(column);

// 선택한 연락처의 전화번호를 EditText 에 보여준다.

EditText editText = (EditText)findViewById( R.id.edit_message);

editText.setText( number);

}

}

}


: