public class MainActivity extends ActionBarActivity {
private EditText number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
number = (EditText) findViewById(R.id.number);
}
public void select(View view) {
Intent intent = new Intent(this, SelectContactActivity.class);
startActivityForResult(intent, 1);
}
/**
* 当新开启的 activity 关闭的时候 调用这个方法
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
String numberString = data.getStringExtra("number");
if(requestCode==1){
number.setText(numberString);
}else if(requestCode==2){
number.setText(numberString);
}
}
/**
* 可以 通过 resultCode 判断,处理不同的事情
*/
super.onActivityResult(requestCode, resultCode, data);
}
public void send(View view) {
}
}
public class SelectContactActivity extends Activity {
public static final String TAG_STRING = "SelectContactActivity";
private ListView listView;
private ArrayList<ContactInfo> infos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_contact);
listView = (ListView) findViewById(R.id.listview);
infos = (ArrayList<ContactInfo>) ContactInfoService
.getContactInfos(this);
listView.setAdapter(new ContactsAdapter(infos));
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ContactInfo contactInfo = infos.get(position);
String name = contactInfo.getName();
String number = contactInfo.getNumber();
Intent intent = new Intent();
intent.putExtra("number", number);
setResult(0, intent);
finish();
}
});
}
public class ContactsAdapter extends BaseAdapter {
private ArrayList<ContactInfo> list;
public ContactsAdapter(List<ContactInfo> list) {
this.list = (ArrayList<ContactInfo>) list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG_STRING, position + "");
Log.i(TAG_STRING, list.toString());
ContactInfo info = list.get(position);
View view = View.inflate(getApplicationContext(),
R.layout.contact_item, null);
TextView tView = (TextView) view.findViewById(R.id.tv_name);
TextView tView2 = (TextView) view.findViewById(R.id.tv_number);
tView.setText(info.getName());
tView2.setText(info.getNumber());
Log.i(TAG_STRING, info.getName());
Log.i(TAG_STRING, info.getNumber());
return view;
}
}
}
/**
* 获取系统中所有的联系人
*
*
*/
public class ContactInfoService {
public static List<ContactInfo> getContactInfos(Context context) {
ArrayList<ContactInfo> list = new ArrayList<>();
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dateUri = Uri.parse("content://com.android.contacts/data");
Cursor cursor = contentResolver.query(uri,
new String[] { "contact_id" }, null, null, null);
ContactInfo contactInfo = null;
while (cursor.moveToNext()) {
String id = cursor.getString(0);
if (id != null) {
contactInfo = new ContactInfo();
Cursor data = contentResolver.query(dateUri, new String[] {
"data1", "mimetype" }, "raw_contact_id=?",
new String[] { id }, null);
while (data.moveToNext()) {
String data1 = data.getString(data
.getColumnIndexOrThrow("data1"));
String mimietype = data.getString(data
.getColumnIndexOrThrow("mimetype"));
if ("vnd.android.cursor.item/name".equals(mimietype)) {
contactInfo.setName(data1);
}else if("vnd.android.cursor.item/phone_v2".equals(mimietype)){
contactInfo.setNumber(data1);
}
}
list.add(contactInfo);
data.close();
}
}
cursor.close();
return list;
}
}