Android手机通讯录应用
2014-08-25 09:15
399 查看
首先创建一个MySALiteOpenHelper.java文件,在首次运行时,会创建数据库
import android.content.Context;import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class MySQLiteOpenHelper extends SQLiteOpenHelper{
private static final String DB_NAME="linkman.db";
private static final int DB_VERSION=1;
public static final String LINKMAN_TAB="linkman";
public MySQLiteOpenHelper(Context context,String name,
CursorFactory factory,int version){
super(context,DB_NAME,factory,DB_VERSION);
}
public MySQLiteOpenHelper(Context context){
this(context,DB_NAME,null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
StringBuilder createLinkManTable = new StringBuilder();
createLinkManTable.append("create table ");
createLinkManTable.append(LINKMAN_TAB);
createLinkManTable.append("(");
createLinkManTable.append(" id integer primary key autoincrement,");
createLinkManTable.append(" name varchar(100) ,");
createLinkManTable.append(" number varchar(100) ");
createLinkManTable.append(")");
db.execSQL(createLinkManTable.toString());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
同时,数据库相应操作在LinkManDao.java中
import java.util.ArrayList;import com.wangnan.linkman.entity.LinkMan;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class LinkManDao {
private MySQLiteOpenHelper dbOpenHelper;
public LinkManDao(Context mContext){
dbOpenHelper = new MySQLiteOpenHelper(mContext);
dbOpenHelper.getWritableDatabase();
}
public void addlinkam(String name,String number){
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
ContentValues values= new ContentValues();
values.put("name", name);
values.put("number", number);
db.insert(MySQLiteOpenHelper.LINKMAN_TAB, null, values);
db.close();
}
public ArrayList<LinkMan> findlinkman(){
ArrayList<LinkMan> list = new ArrayList<LinkMan>();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
//第二个方法,使用游标,,从游标里面查询
Cursor cursor =db.query(MySQLiteOpenHelper.LINKMAN_TAB,
new String[]{"id","name","number"},
null,
null,
null,
null,
null);
while(cursor.moveToNext()){
//首先由通过查询id、title、author得到其索引,再在索引的基础上得到值
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String number =cursor.getString(cursor.getColumnIndex("number"));
LinkMan l=new LinkMan();
l.setId(id);
l.setName(name);
l.setNumber(number);
list.add(l);
}
//关闭游标
cursor.close();
db.close();
return list;
}
//以名删除
public void deletelinkman(String name){
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
db.delete(MySQLiteOpenHelper.LINKMAN_TAB, "name=?", new String[]{name+""});
db.close();
}
//以id删除
public void deletelinkman(int id){
SQLiteDatabase db=dbOpenHelper.getWritableDatabase();
db.delete(MySQLiteOpenHelper.LINKMAN_TAB, "id=?", new String[]{id+""});
db.close();
}
//更新信息,以id更新
public void updatelinkman(int id,String name,String number){
SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
ContentValues values= new ContentValues();
values.put("name", name);
values.put("number", number);
db.update(MySQLiteOpenHelper.LINKMAN_TAB, values, "id=?", new String[]{id+""});
db.close();
}
}
创建一个LinkMan.java类
import android.widget.Button;public class LinkMan {
private int id;
private String name;
private String number;
private Button call;
private Button message;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Button getCall() {
return call;
}
public void setCall(Button call) {
this.call = call;
}
public Button getMessage() {
return message;
}
public void setMessage(Button message) {
this.message = message;
}
}
创建一个LinkMAnListActivity.java
import java.util.ArrayList;import com.wangnan.linkman.adapter.LinkManAdapter;
import com.wangnan.linkman.db.LinkManDao;
import com.wangnan.linkman.entity.LinkMan;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ListView;
public class LinkManListActivity extends Activity implements OnClickListener{
private ListView listView;
private LinkManAdapter myAdapter;
public ArrayList<LinkMan> myData = new ArrayList<LinkMan>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linkmanlist);
listView =(ListView)findViewById(R.id.mylinklist);
findViewById(R.id.linkman_add).setOnClickListener(this);
//initMyData();
//myAdapter = new LinkManAdapter(this, myData);
//listView.setAdapter(myAdapter);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
4000
case R.id.linkman_add:
Intent intent1= new Intent(this,LinkManAddActivity.class);
startActivity(intent1);
break;
default:
break;
}
}
//每次打开时都重新加载,显示出来
@Override
protected void onStart() {
super.onStart();
initData();
myAdapter.notifyDataSetChanged();
}
//查找所有的数据
public void initData(){
LinkManDao linkmanDao = new LinkManDao(this);
ArrayList<LinkMan> list = linkmanDao.findlinkman();
myAdapter= new LinkManAdapter(this,list);
listView.setAdapter(myAdapter);
}
}
创建一个LinkManAddActivity.java文件
import android.app.Activity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class LinkManAddActivity extends Activity implements OnClickListener{
private EditText addname;
private EditText addnumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linkmanlist_add);
addname=(EditText)findViewById(R.id.link_add_name);
addnumber=(EditText)findViewById(R.id.link_add_number);
findViewById(R.id.link_add_cancle).setOnClickListener(this);
findViewById(R.id.link_add_ok).setOnClickListener(this);
}
@Override
public void onClick(View v) {
LinkManDao linkmanDao = new LinkManDao(this);
switch (v.getId()) {
case R.id.link_add_cancle:
Intent intent1 = new Intent(this,LinkManListActivity.class);
startActivity(intent1);
break;
case R.id.link_add_ok:
String name=addname.getText().toString();
String number=addnumber.getText().toString();
linkmanDao.addlinkam(name, number);
finish();
break;
default:
break;
}
}
}
创建一个LinkManUpdateActivity.java
import com.wangnan.linkman.db.LinkManDao;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class LinkManUpdateActivity extends Activity implements OnClickListener{
private EditText linkmannumber;
private EditText linkmanname;
private int linkmanid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linkmanlist_item_change);
linkmannumber=(EditText)findViewById(R.id.linkman_number_new);
linkmanname=(EditText)findViewById(R.id.linkman_name_new);
//获取从Adapter 传递来的值
Intent intent = getIntent();
String number=intent.getStringExtra("number");
linkmannumber.setText(number);
String name=intent.getStringExtra("name");
linkmanname.setText(name);
linkmanid=intent.getIntExtra("id",0);
findViewById(R.id.linkman_item_cancle).setOnClickListener(this);
findViewById(R.id.linkman_item_save).setOnClickListener(this);
}
@Override
public void onClick(View v) {
LinkManDao linkmanDao = new LinkManDao(this);
switch (v.getId()) {
case R.id.linkman_item_save:
int id=linkmanid;
String newname=linkmanname.getText().toString();
String newnumber=linkmannumber.getText().toString();
linkmanDao.updatelinkman(id,newname, newnumber);
Intent intent1 = new Intent(this,LinkManListActivity.class);
startActivity(intent1);
break;
case R.id.linkman_item_cancle:
Intent intent2= new Intent(this,LinkManListActivity.class);
startActivity(intent2);
break;
default:
break;
}
}
}
创建MenuActivity.java
import com.wangnan.linkman.db.LinkManDao;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MenuActivity extends Activity{
private TextView linkmannumber;
private TextView linkmanname;
private int linkmanid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linkmanlist_item_show);
linkmannumber=(TextView)findViewById(R.id.linkman_number_show);
linkmanname=(TextView)findViewById(R.id.linkman_name_show);
Intent intent = getIntent();
String number=intent.getStringExtra("number");
linkmannumber.setText(number);
String name=intent.getStringExtra("name");
linkmanname.setText(name);
linkmanid=intent.getIntExtra("id",0);
//上下文菜单使用
TextView t=(TextView)findViewById(R.id.linkman_item_show_title);
registerForContextMenu(t);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.context_menu, menu);
menu.setHeaderTitle("操作");
}
@Override
public boolean onContextItemSelected(MenuItem item){
LinkManDao linkmanDao = new LinkManDao(this);
switch (item.getItemId()) {
case R.id.action_edit:
//Toast.makeText(this, "你点击了上下文菜单中的修改哦~", Toast.LENGTH_SHORT).show();
Intent intent1 = new Intent(this,LinkManUpdateActivity.class);
intent1.putExtra("id", linkmanid);
intent1.putExtra("name",linkmanname.getText().toString() );
intent1.putExtra("number", linkmannumber.getText().toString());
startActivity(intent1);
break;
case R.id.action_delete:
//Toast.makeText(this, "你点击了上下文菜单中的删除哦~", Toast.LENGTH_SHORT).show();
//用名字删除信息
/*String name=linkmanname.getText().toString();
linkmanDao.deletelinkman(name);*/
int id=linkmanid;
linkmanDao.deletelinkman(id);
Intent intent2 = new Intent(this,LinkManListActivity.class);
startActivity(intent2);
break;
case R.id.action_cancle:
Toast.makeText(this, "取消", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onContextItemSelected(item);
}
}
创建MessageActivity.java
import android.app.Activity;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class MessageActivity extends Activity implements OnClickListener{
private EditText linkmannumber;
private EditText linkmancontent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linkmanlist_message);
linkmannumber=(EditText)findViewById(R.id.linkman_send_message_number);
linkmancontent=(EditText)findViewById(R.id.linkman_send_message_content);
Intent intent =getIntent();
String number=intent.getStringExtra("number");
linkmannumber.setText(number);
findViewById(R.id.linkman_send_message_cancle).setOnClickListener(this);
findViewById(R.id.linkman_send_message_ok).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.linkman_send_message_ok:
String content=linkmancontent.getText().toString();
String number=linkmannumber.getText().toString();
Uri uri =Uri.parse("smsto:"+number);
Intent intent1= new Intent(Intent.ACTION_SENDTO,uri);
intent1.putExtra("sms_body", content);
startActivity(intent1);
break;
case R.id.linkman_send_message_cancle:
Intent intent2= new Intent(this,LinkManListActivity.class);
startActivity(intent2);
break;
default:
break;
}
}
}
自己创建一个适配器AdapterActivity.java
import java.util.ArrayList;import com.wangnan.linkman.MenuActivity;
import com.wangnan.linkman.MessageActivity;
import com.wangnan.linkman.R;
import com.wangnan.linkman.entity.LinkMan;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
public class LinkManAdapter extends BaseAdapter {
private ArrayList<LinkMan> mlist;
private Context mContext;
public LinkManAdapter(Context context,ArrayList<LinkMan> mlist){
super();
this.mlist=mlist;
this.mContext=context;
}
@Override
public int getCount() {
return this.mlist==null?0:this.mlist.size();
}
@Override
public Object getItem(int arg0) {
return this.mlist.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null){
LayoutInflater inflater =LayoutInflater.from(this.mContext);
convertView = inflater.inflate(R.layout.linkmanlist_item, null);
holder = new ViewHolder();
holder.name=(TextView)convertView.findViewById(R.id.linkman_name);
holder.number=(TextView)convertView.findViewById(R.id.linkman_number);
holder.call=(Button)convertView.findViewById(R.id.linkman_call);
holder.message=(Button)convertView.findViewById(R.id.linkman_message);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
final LinkMan linkman =this.mlist.get(position);
holder.name.setText(linkman.getName());
holder.number.setText(linkman.getNumber());
holder.name.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(mContext,MenuActivity.class);
intent.putExtra("id", linkman.getId());
intent.putExtra("name", linkman.getName());
intent.putExtra("number", linkman.getNumber());
mContext.startActivity(intent);
}
});
holder.call.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(mContext,"sssss" , Toast.LENGTH_LONG).show();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+linkman.getNumber()));
mContext.startActivity(intent);
}
});
holder.message.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(mContext,MessageActivity.class);
intent.putExtra("number", linkman.getNumber());
mContext.startActivity(intent);
}
});
return convertView;
}
public static class ViewHolder{
TextView name;
TextView number;
Button call;
Button message;
}
}
978d
****不要忘了在主Activity中添加相应的权限(打电话,发短信),并且加上涉及到的Activity的名字
相应的xml文件略相关文章推荐
- Android应用访问手机联系人、通讯录
- Google手机操作系统Android应用开发入门
- Google手机操作系统Android应用开发入门
- Android中级教程(一)之----手机页面的转换setContentView的应用
- android 平台上的手机应用开发 how to user HttpUrlConnection POST Much Fields to Web Server ?
- android 平台上的手机应用开发 how to user HttpUrlConnection POST Much Fields to Web Server ?
- Google手机操作系统Android应用开发入门
- 【Android体验】从用户角度看,Android手机/应用应该要这样:
- Android基础教程(四)之-----取得手机屏幕大小DisplayMetrics的应用
- Google手机操作系统Android应用开发入门
- 谷歌Android手机应用开发环境的搭建 转载
- Google手机操作系统Android应用开发入门
- Google手机操作系统Android应用开发入门
- Google手机操作系统Android应用开发入门
- Android基础教程(四)之-----取得手机屏幕大小DisplayMetrics的应用
- Google手机操作系统Android应用开发入门
- Google手机操作系统Android应用开发入门
- Google手机操作系统Android应用开发入门
- 索爱针对Android平台推出WebSDK, 主要是为其Android手机开发应用。
- 谷歌Android手机应用开发环境的搭建