没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Android 通讯录
这是本人学习 android 一个月以来的第一个比较实用的小程序,
此程序可以读取手机自带通讯录上的所有联系人,并且可以导入到
这个通讯录列表,不用用户一个一个地输入,将导入的联系人信息
保存在 SQLite3 数据库中,还具有向指定联系人发送短信、打电话、
增加、修改联系人等基本功能。效果图如下所示:
代码如下(直接复制即可掩饰效果):
====================== DatabaseHelper=======================
package liu.sqlite3.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
//DatabaseHelper 作为一个访问 SQLite 的助手类,提供两个方面的功能,
//第一,getReadableDatabase(),getWritableDatabase()可以获得 SQLiteDatabse 对象,通过该对象可以对
数据库进行操作
//第二,提供了 onCreate()和 onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己
的操作
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
//在 SQLiteOepnHelper 的子类当中,必须有该构造函数
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
//必须通过 super 调用父类当中的构造函数
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DatabaseHelper(Context context,String name){
this(context,name,VERSION);
}
public DatabaseHelper(Context context,String name,int version){
this(context, name,null,version);
}
//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到 SQLiteDatabse 对象的时候,
才会调用这个方法
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("create a Database");
//execSQL 函数用于执行 SQL 语句
db.execSQL("create table user(name varchar(20),phone text,qq text,mail text,address text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
System.out.println("update a Database");
}
}
=======================Add_people======================
package net.yxarm;
import java.util.ArrayList;
import java.util.HashMap;
import liu.sqlite3.db.DatabaseHelper;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Add_people extends Activity {
private EditText editName = null;
private EditText editPhone = null;
private EditText editQQ = null;
private EditText editEmail = null;
private EditText editAddress = null;
private Button buttonAdd = null;
private Button buttonCancel = null;
public static int n ;
//==============重写 Activity 中创建 Activity 的方法=================================
=======
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
editName = (EditText) findViewById(R.id.edit_name);
editPhone = (EditText) findViewById(R.id.edit_phone);
editQQ = (EditText) findViewById(R.id.edit_QQ);
editEmail = (EditText) findViewById(R.id.edit_mail);
editAddress = (EditText) findViewById(R.id.edit_address);
buttonAdd = (Button) findViewById(R.id.button1_add);
buttonCancel= (Button) findViewById(R.id.button2_cancel);
//判断是否是修改联系人还是重新创建,修改的话将原始信息重新填写到编辑框内,然后下面根
据 n 的值决定调用新建还是修改数据的方法
Intent intent = getIntent(); //接收上一个 Activity 通过 intent 传过来的数据
n = intent.getIntExtra("editpeople", 0);
if(n == 1)
{
System.out.println("----上一个 Activity 传进来的(editpeople)值: " + n);
editName.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("name").toString());
editPhone.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("phone").toString());
editQQ.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("qq").toString());
editEmail.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("mail").toString());
editAddress.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get("address").toString());
}
//设置两个按钮监听事件
buttonAdd.setOnClickListener(new MyButtonOnClickListener());
buttonCancel.setOnClickListener(new MyButtonOnClickListener());
}
//======================两个按钮监听处理事件==================================
==========
class MyButtonOnClickListener implements OnClickListener {
private static final int REQUESCODE2 = 2;
public void onClick(View v) {
switch(v.getId()) {
case R.id.button1_add: //--------------------确定添加此联系人
//判断联系人是否可以添加(如:姓名不能为空、电话要有效)
if(editName.getText().toString().length()>0 &
editPhone.getText().toString().length()>=3 ) {
CreateDatabaseHelper(); //创建数据库,将联系人信息保存到数据库
(若数据库存在则不会重建)
if(n != 1) { //新建联系人,若是修改联系人则不会再添加
Address_Book.LIST = Insert(); //返回全部数据给 LIST 静态列表变
量
Toast.makeText(Add_people.this, "添加成功", 1).show();
System.out.println(".......选择新建联系人");
}else if(n == 1) { //修改联系人(n:是点击了修改联系人后传进来的值)
Address_Book.LIST = modfiy(); //返回全部数据给 LIST 静态列表变量
Toast.makeText(Add_people.this, "修改成功", 1).show();
System.out.println(".......选择修改联系人");
}
//返回到第一个 Activity 中显示(所有数据已经保存在 LIST 静态列表变
量中)
Intent intent = new Intent();
intent.setClass(Add_people.this,Address_Book.class);
intent.putExtra("nothing2", 2);
startActivityForResult(intent, REQUESCODE2);
}else if(editName.getText().toString().equals("")){ //没有输入名字不能添加
Toast.makeText(Add_people.this, "请输入联系人姓名", 1).show();
}else if( editPhone.getText().toString().length()<3 ) { //电话无效不能添加
Toast.makeText(Add_people.this, "请输入有效电话", 1).show();
}
break;
case R.id.button2_cancel: //------------------取消此联系人的添加回到列表界面
Toast.makeText(Add_people.this, "取消", 1).show();
Intent intent = new Intent(Add_people.this,Address_Book.class);
startActivity(intent);
break;
default: break;
}
剩余40页未读,继续阅读
资源评论
weixin_43935634
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功