본문 바로가기
OldStory/Android

ContactPicker

by Alnilam 2011. 8. 29.
반응형

프로페셔널 안드로이드2 애플리케이션 개발 5장의 ContactPicker

인텐트를 이용한 액티비티간 데이터 전송 예제

연락처 데이터 베이스에서 각각의 연락처를 표시하는 "contactpicker"와

이를 호출하는 "contactpickerTester" 두 개의 액티비티 클래스로 구성 된다.

"contactpickerTester" 뷰에 "연락처 선택"버튼이 있어 이 버튼을 누루면

"contactpicker" 액티비티로 전환되고 연락처가 표시 된다.

연락처를 선택하면 선택된 연락처의 URI를 리턴하고 "contactpickerTester"에서 받아

표시하는 간단한 인텐트 필터 예제 프로그램.

ContactPicker.java
[java]
package com.paad.contactpicker;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class ContactPicker extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);

Intent intent = getIntent();
String dataPath =intent.getData().toString();

final Uri data = Uri.parse(dataPath + "people/");
final Cursor c = managedQuery(data, null, null, null, null);

String[] from = new String[] {People.NAME};
int[] to = new int[] {R.id.itemTextView };

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.listitemlayout,
c,
from,
to);
ListView lv = (ListView)findViewById(R.id.contactListView);
lv.setAdapter(adapter);

lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int pos,
long id) {
// 선택된 아이템으로 커서 이동
c.moveToPosition(pos);
int rowId = c.getInt(c.getColumnIndexOrThrow("_id")); //row ID
Uri outURI = Uri.parse(data.toString() + rowId); // result URI
Intent outData = new Intent();
outData.setData(outURI);
setResult(Activity.RESULT_OK, outData);
finish();
}
});
}
}
[/java]

ContactPickerTester.java
[java]
package com.paad.contactpicker;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ContactPickerTester extends Activity{

public static final int PICK_CONTACT = 1;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.contactpickertester);

Button button = (Button)findViewById(R.id.pick_contact_button);

button.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View _view) {
Intent intent = new Intent(Intent.ACTION_PICK,
Uri.parse("content://contacts/"));
startActivityForResult(intent, PICK_CONTACT);
}

});
}

@Override
public void onActivityResult(int reqCode, int resCode, Intent data) {
super.onActivityResult(reqCode, resCode, data);

switch(reqCode) {
case(PICK_CONTACT):{
if(resCode == Activity.RESULT_OK) {
Uri contactDatat = data.getData();
Cursor c = managedQuery(contactDatat, null, null, null, null);
c.moveToFirst();
String name = c.getString(c.getColumnIndexOrThrow(People.NAME));
TextView tv = (TextView)findViewById(R.id.selected_contact_textview);
tv.setText(name);
}
break;
}
}
}

}
[/java]

contactpickertester.xml
[xml]


반응형

'OldStory > Android' 카테고리의 다른 글

android-sdk for Ubuntu 64bits  (0) 2012.01.14
갤럭시 S2  (0) 2011.10.22
To Do List - Ch4  (0) 2011.08.08
Compass - Ch4  (0) 2011.07.23
TodoList -Ch4  (0) 2011.07.14