프로페셔널 안드로이드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]
[/xml]
listitemlayout.xml
[xml]
[/xml]
main.xml
[xml]
[/xml]
contactpicker 엑티비티
contactpickerTester 액티비티
'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 |