DemoActivity.java:
package cn.itcast.getdata;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class DemoActivity extends Activity {
EditText et, et2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et = (EditText) this.findViewById(R.id.et_contact1);
et2 = (EditText) this.findViewById(R.id.et_contact2);
}
public void click(View view) {
Intent intent = new Intent(this, ContactActivity.class);
// startActivity(intent); 1 为请求码
startActivityForResult(intent, 1);
}
public void click2(View view) {
Intent intent = new Intent(this, ContactActivity.class);
// startActivity(intent); 2 为请求码
startActivityForResult(intent, 2);
}
/**
* 当被激活的activity 使用完毕 销毁的时候 就会执行onActivityresult的方法
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
System.out.println("结果码为" + resultCode);
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
String name = data.getStringExtra("name");
if (requestCode == 1) {
et.setText(name);
} else if (requestCode == 2) {
et2.setText(name);
}
}
}
}
ContactActivity.java:
package cn.itcast.getdata;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class ContactActivity extends Activity {
ListView lv;
List<String> names;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.contact);
lv = (ListView) this.findViewById(R.id.lv);
names = getContacts();
lv.setAdapter(new MyAdapter());
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView tv = (TextView) view;
String name = tv.getText().toString();
Intent data = new Intent();
data.putExtra("name", name);
// 3 为结果码
setResult(3, data);
// 可以把当前的activity给结束掉
finish();
}
});
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return names.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(ContactActivity.this);
tv.setTextSize(28);
tv.setTextColor(Color.RED);
tv.setText(names.get(position));
return tv;
}
}
private List<String> getContacts() {
String rawbase = "content://com.android.contacts/raw_contacts";
String database = "content://com.android.contacts/data";
Cursor cursor = this.getContentResolver().query(Uri.parse(rawbase),
null, null, null, null);
List<String> names = new ArrayList<String>();
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex("_id"));
System.out.println("id =" + id);
Cursor datacursor = this.getContentResolver().query(
Uri.parse(database), null, "raw_contact_id=?",
new String[] { id }, null);
while (datacursor.moveToNext()) {
String type = datacursor.getString(datacursor
.getColumnIndex("mimetype"));
if ("vnd.android.cursor.item/name".equals(type)) {
String data1 = datacursor.getString(datacursor
.getColumnIndex("data1"));
names.add(data1);
}
}
datacursor.close();
}
cursor.close();
return names;
}
}
contact.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="选择联系人" />
<EditText
android:id="@+id/et_contact1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="click"
android:text="选择第一个联系人"
>
</Button>
<EditText
android:id="@+id/et_contact2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="click2"
android:text="选择第二个联系人"
>
</Button>
</LinearLayout>
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.getdata"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".DemoActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="选择联系人"
android:name=".ContactActivity"
></activity>
</application>
</manifest>