您的位置:首页 > 移动开发 > Android开发

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文件略
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息