设计开发源代码1.AddContactsActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Toast;import .demo.pr3.datax.ContactsTable;import er;/*增加记录操作界面*/public class AddContactsActivity extends Activity { private EditText nameEditText; //输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qqprivate EditText danweiEditText; //单位private EditText addressEditText; //地址Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.edit);setTitle("添加联系人");//从已设置的页面布局查找对应的控件nameEditText=(EditText)findViewById();mobileEditText=(EditText)findViewById(R.id.mobile); danweiEditText=(EditText)findViewById(R.id.danwei); qqEditText=(EditText)findViewById(R.id.qq);addressEditText=(EditText)findViewById(R.id.address); }/*创建菜单 */public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE,1, Menu.NONE, "保存");menu.add(Menu.NONE,2, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/* 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){ // TODO Auto-generated method stubswitch (item.getItemId()) {case 1://保存if(!nameEditText.getText().toString().equals("")){User user=new User();user.setName(nameEditText.getText().toString());user.setMoblie(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct=new ContactsTable(AddContactsActivity.this);if(ct.addData(user)){Toast.makeText(AddContactsActivity.this, "添加成功!",Toast.LENGTH_SHORT).show();finish();}else{Toast.makeText(AddContactsActivity.this, "添加失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(AddContactsActivity.this, "请先输入数据!",Toast.LENGTH_SHORT).show();}break;case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}2. ContactsMessageActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;import .demo.pr3.datax.ContactsTable;import er;/*显示联系人界面 */public class ContactsMessageActivity extends Activity { private TextView nameTextView; //输入框private TextView mobileTextView; //手机输入框private TextView qqTextView; //qqprivate TextView danweiTextView; //单位private TextView addressTextView; //地址private User user; //修改的联系人Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.message);setTitle("联系人信息");//从已设置的页面布局查找对应的控件nameTextView=(TextView)findViewById();mobileTextView=(TextView)findViewById(R.id.mobile); danweiTextView=(TextView)findViewById(R.id.danwei); qqTextView=(TextView)findViewById(R.id.qq);addressTextView=(TextView)findViewById(R.id.address);//将要修改的联系人数据付值到用户界面显示Bundle localBundle = getIntent().getExtras();int id=localBundle.getInt("user_ID");ContactsTable ct=new ContactsTable(this);user =ct.getUserByID(id);nameTextView.setText(":"+user.getName());mobileTextView.setText(":"+user.getMoblie());qqTextView.setText("QQ:"+user.getQq());danweiTextView.setText("单位:"+user.getDanwei());addressTextView.setText("地址:"+user.getAddress());}/*创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/* 菜单事件 */public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}3. MyContactsActivity类package .demo.pr3;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.AlertDialog.Builder;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Color;import .Uri;import android.os.Bundle;import android.provider.ContactsContract.RawContacts;import monDataKinds.Phone;import monDataKinds.StructuredName; import android.provider.ContactsContract.Contacts.Data;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import .demo.pr3.datax.ContactsTable;import er;/*主界面*/public class MyContactsActivity extends Activity {private ListView listView; //结果列表private BaseAdapter listViewAdapter; //ListView 列表适配器private User users[];//通讯录用户private int selecteItem=0; //当前选择Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);setTitle("通讯录");listView = (ListView) findViewById(R.id.listView);loadContacts();}/*加载联系人列表*/private void loadContacts(){//获取所以通讯录联系人ContactsTable ct=new ContactsTable(this);users=ct.getAllUser();//listView列表现实适配器listViewAdapter=new BaseAdapter() {Overridepublic View getView(int position,View convertView, ViewGroup parent) {if(convertView==null){TextView textView =new TextView(MyContactsActivity.this);textView.setTextSize(22);convertView=textView;}String moblie=users[position].getMoblie()==null?"":users[position].getMoblie();((TextView)convertView).setText(users[position].getName()+"---"+moblie);if(position==selecteItem){convertView.setBackgroundColor(Color.YELLOW);}else{convertView.setBackgroundColor(0);}return convertView;}Overridepublic long getItemId(int position) {return position;}Overridepublic Object getItem(int position) {return users[position];}Overridepublic int getCount() {return users.length;}};//设置listView控件的适配器listView.setAdapter(listViewAdapter);listView.setOnItemClickListener(new OnItemClickListener() {Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stub//记录点击列selecteItem=arg2;//刷新列表listViewAdapter.notifyDataSetChanged();}});}/*创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "添加");menu.add(Menu.NONE, 2, Menu.NONE, "编辑");menu.add(Menu.NONE, 3, Menu.NONE, "查看信息");menu.add(Menu.NONE, 4, Menu.NONE, "删除");menu.add(Menu.NONE, 5, Menu.NONE, "查询");menu.add(Menu.NONE, 6, Menu.NONE, "导入到手机薄");menu.add(Menu.NONE, 7, Menu.NONE, "退出");return super.onCreateOptionsMenu(menu);}/*菜单事件*/public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://添加Intent intent = new Intent(MyContactsActivity.this,AddContactsActivity.class);startActivity(intent);break;case 2://编辑if(users[selecteItem].getId_DB()>0)//根据数据库ID判断当前记录是否可以操作{intent = new Intent(MyContactsActivity.this,UpdateContactsActivity.class);intent.putExtra("user_ID", users[selecteItem].getId_DB());startActivity(intent);}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 3://查看信息if(users[selecteItem].getId_DB()>0){intent = new Intent(MyContactsActivity.this,ContactsMessageActivity.class);intent.putExtra("user_ID", users[selecteItem].getId_DB());startActivity(intent);}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 4://删除if(users[selecteItem].getId_DB()>0){delete();}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 5://查询new FindDialog(this).show();break;case 6://导入到手机薄if(users[selecteItem].getId_DB()>0){importPhone(users[selecteItem].getName(),users[selecteItem].getMoblie());Toast.makeText(this, "已经成功导入‘"+users[selecteItem].getName()+"’到手机薄!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 7://退出finish();break;default:break;}return super.onOptionsItemSelected(item);}Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();//重新加载数据ContactsTable ct=new ContactsTable(this);users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();}/*查询*/public class FindDialog extends Dialog{public FindDialog(Context context) {super(context);}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.find);setTitle("联系人查询");Button find=(Button)findViewById(R.id.find);Button cancel=(Button)findViewById(R.id.cancel);find.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditText value=(EditText)findViewById(R.id.value);ContactsTable ct=new ContactsTable(MyContactsActivity.this);users=ct.findUserByKey(value.getText().toString());for(int i=0;i<users.length;i++){System.out.println("是"+users[i].getName()+",是" +users[i].getMoblie());}listViewAdapter.notifyDataSetChanged();selecteItem=0;dismiss();}});cancel.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubdismiss();}});}}/*删除联系人*/public void delete(){Builder alert = new AlertDialog.Builder(this);alert.setTitle("系统信息");alert.setMessage("是否要删除联系人?");alert.setPositiveButton("是",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) { ContactsTable ct=new ContactsTable(MyContactsActivity.this);//删除联系人信息if(ct.deleteByUser(users[selecteItem])){//重新获取数据users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();selecteItem=0;Toast.makeText(MyContactsActivity.this, "删除成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MyContactsActivity.this, "删除失败!",Toast.LENGTH_SHORT).show();}}});alert.setNegativeButton("否",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {}});alert.show();}///导入到手机薄public void importPhone(String name,String phone){//系统通信录ContentProvider的URIUri phoneURL=android.provider.ContactsContract.Data.CONTENT_URI;ContentValues values = new ContentValues();//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactIdUri rawContactUri = this.getContentResolver().insert(RawContacts.CONTENT_URI, values);long rawContactId = ContentUris.parseId(rawContactUri);//往data表插入数据values.clear();values.put(Data.RAW_CONTACT_ID, rawContactId);values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);values.put(StructuredName.GIVEN_NAME, name);this.getContentResolver().insert(phoneURL, values);//往data表插入数据values.clear();values.put(Data.RAW_CONTACT_ID, rawContactId);values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);values.put(Phone.NUMBER, phone);values.put(Phone.TYPE, Phone.TYPE_MOBILE);this.getContentResolver().insert(phoneURL, values);}}4. UpdateContactsActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Toast;import .demo.pr3.datax.ContactsTable;import er;/*修改记录操作界面*/public class UpdateContactsActivity extends Activity {/** Called when the activity is first created. */ private EditText nameEditText; //输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qqprivate EditText danweiEditText; //单位private EditText addressEditText; //地址private User user; //修改的联系人Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.edit);setTitle("修改联系人");//从已设置的页面布局查找对应的控件nameEditText=(EditText)findViewById();mobileEditText=(EditText)findViewById(R.id.mobile);danweiEditText=(EditText)findViewById(R.id.danwei);qqEditText=(EditText)findViewById(R.id.qq);addressEditText=(EditText)findViewById(R.id.address);//将要修改的联系人数据赋值到用户界面显示Bundle localBundle = getIntent().getExtras();int id=localBundle.getInt("user_ID");ContactsTable ct=new ContactsTable(this);user =ct.getUserByID(id);nameEditText.setText(user.getName());mobileEditText.setText(user.getMoblie());qqEditText.setText(user.getQq());danweiEditText.setText(user.getDanwei());addressEditText.setText(user.getAddress());}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "保存");menu.add(Menu.NONE, 2, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://保存if(!nameEditText.getText().toString().equals("")){user.setName(nameEditText.getText().toString());user.setMoblie(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct=new ContactsTable(UpdateContactsActivity.this);//修改数据库联系人信息if(ct.updateUser(user)){Toast.makeText(UpdateContactsActivity.this, "修改成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(UpdateContactsActivity.this, "修改失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(UpdateContactsActivity.this, "数据不能为空!",Toast.LENGTH_SHORT).show();}break;case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}。