Android通讯录小软件.docx

上传人:小飞机 文档编号:3152520 上传时间:2023-03-11 格式:DOCX 页数:60 大小:51.09KB
返回 下载 相关 举报
Android通讯录小软件.docx_第1页
第1页 / 共60页
Android通讯录小软件.docx_第2页
第2页 / 共60页
Android通讯录小软件.docx_第3页
第3页 / 共60页
Android通讯录小软件.docx_第4页
第4页 / 共60页
Android通讯录小软件.docx_第5页
第5页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Android通讯录小软件.docx》由会员分享,可在线阅读,更多相关《Android通讯录小软件.docx(60页珍藏版)》请在三一办公上搜索。

1、Android通讯录小软件Android通讯录 这是本人学习android一个月以来的第一个比较实用的小程序,此程序可以读取手机自带通讯录上的所有联系人,并且可以导入到这个通讯录列表,不用用户一个一个地输入,将导入的联系人信息保存在SQLite3数据库中,还具有向指定联系人发送短信、打电话、增加、修改联系人等基本功能。效果图如下所示: 代码如下(直接复制即可掩饰效果): = DatabaseHelper= package liu.sqlite3.db; import android.content.Context; import android.database.sqlite.SQLiteDa

2、tabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能, /第一,getReadableDatabase,getWritableDatabase可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作 /第二,提供了onCreate和onUpgrade两个回调函数,允许我们在创建和升级数据库时,进行自己的操作 publi

3、c 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 construct

4、or stub public DatabaseHelper(Context context,String name) public DatabaseHelper(Context context,String name,int version) /该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,Override public void onCreate(SQLiteDatabase db) Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion

5、) / TODO Auto-generated method stub System.out.println(update a Database); / 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); this(context, name,null,version); this(con

6、text,name,VERSION); 才会调用这个方法 =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.da

7、tabase.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.V

8、iew.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class Add_people extends Activity /= Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.second); editName = (EditTe

9、xt) 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);

10、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传进来的值: + n); editName.setText(Address_Book.L

11、IST.get(Address_Book.CLICK_ID).get(name).toString); editPhone.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get(phone).toString); 重写Activity中创建Activity的方法= private EditText editName = null; private EditText editPhone = null; private EditText editQQ = null; private EditText editEmail = null; p

12、rivate EditText editAddress = null; private Button buttonAdd = null; private Button buttonCancel = null; public static int n ; 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); editAddres

13、s.setText(Address_Book.LIST.get(Address_Book.CLICK_ID).get(address).toString); /设置两个按钮监听事件 buttonAdd.setOnClickListener(new MyButtonOnClickListener); buttonCancel.setOnClickListener(new MyButtonOnClickListener); /=两个按钮监听处理事件= class MyButtonOnClickListener implements OnClickListener 表变量 值) 变量 Toast.m

14、akeText(Add_people.this, 修改成功, 1).show; System.out.println(.选择修改联系人); Address_Book.LIST = modfiy; /返回全部数据给LIST静态列表 Toast.makeText(Add_people.this, 添加成功, 1).show; System.out.println(.选择新建联系人); if(editName.getText.toString.length0 CreateDatabaseHelper; if(n != 1) /新建联系人,若是修改联系人则不会再添加 Address_Book.LIST

15、 = Insert; /返回全部数据给LIST静态列 /创建数据库,将联系人信息保存到数据 & public void onClick(View v) switch(v.getId) case R.id.button1_add: /-确定添加此联系人 /判断联系人是否可以添加 private static final int REQUESCODE2 = 2; editPhone.getText.toString.length=3 ) 库 else if(n = 1) /修改联系人 /返回到第一个Activity中显示数据= public ArrayList modfiy /生成ContentV

16、alues对象 ContentValues values = new ContentValues; /想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库values.put(name,editName.getText.toString); values.put(phone,editPhone.getText.toString); values.put(qq,editQQ.getText.toString); values.put(mail,editEmail.getText.toString); values.put(address,editAddress.getT

17、ext.toString); DatabaseHelper dbHelper = new DatabaseHelper(Add_people.this,test_mars_db,2); SQLiteDatabase db = dbHelper.getWritableDatabase; 修改联系人之= 前 ?, : + new 当中的数据类型一致 System.out.println(* db.update(user, values, Address_Book.LIST.get(Address_Book.CLICK_ID).toString); name StringAddress_Book.L

18、IST.get(Address_Book.CLICK_ID).get(name).toString); /-将更新后的全部数据返回- /定义一个键值对数组将数据返回到第一个列表Activity中更新进行显示 ArrayListHashMap list = new ArrayListHashMap; DatabaseHelper dbHelper1 = new DatabaseHelper(Add_people.this,test_mars_db); SQLiteDatabase db1 = dbHelper1.getReadableDatabase; Cursor cursor = db1.q

19、uery(user, new Stringname,phone,qq,mail,address, null, while(cursor.moveToNext) HashMap map = new HashMap; map.put(name, cursor.getString(cursor.getColumnIndex(name); map.put(phone, cursor.getString(cursor.getColumnIndex(phone); map.put(qq, cursor.getString(cursor.getColumnIndex(qq); map.put(mail, c

20、ursor.getString(cursor.getColumnIndex(mail); map.put(address, cursor.getString(cursor.getColumnIndex(address); null, null, null, null); return list; /返回全部数据list用于列表显示 = Address_Book= package net.yxarm; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import liu.sqlite3.db

21、.DatabaseHelper; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.AlertDialog.Builder; import android.content.ContentResolver; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import

22、 android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import .Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.PhoneLookup; import android.view.Con

23、textMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem.OnMenuItemClickListener; import android.view.View.OnFocusChange

24、Listener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.wid

25、get.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; public class Address_Book extends Activity private AutoCompleteTextView autotext = null ; /快速查找时对 话框中的控件autoTextView private static List listCheck = new ArrayList; /将所有人的名字保存这数

26、组中实现autoTextView 人 private ListView listview = null; /列表显示所有联系人数据 private SimpleAdapter simpleadapter = null; /适配器 public 重写Activity中创建Activity的方法static ArrayListHashMap LIST = new private static final int REQUESCODE1 = 1; /Activity public static int CLICK_ID = 600 ; /保存选中需要删除的id号,默认设置为600表示没选中联系之间传

27、递数据用的startActivityForResult(intent, REQUESCODE); ArrayListHashMap; /静态变量,别的Activity使用要用类名引用 /= Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.first); Toast.makeText(Address_Book.this, 欢迎使用, 1).show; CLICK_ID = 600 ; /返回这里是都将CLICK_

28、ID初始化为无效值 /接收mainActivity通过intent传过来的数据,然后判断是否显示快速查找对话框 Intent intent1 = getIntent; int n = intent1.getIntExtra(Search_flag, 0); System.out.println(MainActivity传进来的值: + n); if(n = 1) dialogShow; /显示对话 框快速查找 /先查询所有联系人数据并显示出来 LIST = Query; /查询所有联系人并返回到list int size = LIST.size; /-打印输出测试- System.out.pr

29、intln(- + size); for(int i=0;isize;i+) System.out.println( Address_Book.LIST.get(i).toString); listview=(ListView) findViewById(R.id.listview); /注册快捷菜单 registerForContextMenu(listview); /取消注册 /unregisterForContextMenu(textView); listview.setAdapter(simpleadapter); /(点击事件)联系人列表选中单项监听事件,将选中的位置传给静态变量CL

30、ICK_ID = position,并Toast提示语 simpleadapter = new SimpleAdapter(this, LIST, R.layout.listviewitem ,new Stringname,phone , new intR.id.name1,R.id.phone1); listview.setOnItemClickListener(new OnItemClickListener CLICK_ID = position; /将选中列表的那个的位置传给静态变量CLICK_ID 想 ); /Toast.makeText(Address_Book.this, publ

31、ic void onItemClick(AdapterView parent, View view,int position, long id) +LIST.get(CLICK_ID).get(name).toString+啦, 1).show; System.out.println(-Click选中-CLICK_ID-: + CLICK_ID ); /点击后显示背景色绿色 if (ListView)parent).getTag != null) (View)(ListView)parent).getTag).setBackgroundDrawable(null); (ListView)par

32、ent).setTag(view); view.setBackgroundColor(Color.GREEN); /(选中事件)联系人列表选中单项监听事件,将选中的位置传给静态变量CLICK_ID = position,并Toast提示语 listview.setOnItemSelectedListener(new OnItemSelectedListener public void onItemSelected(AdapterView parent, View view,int position, long id) CLICK_ID = position; /将选中列表的那个的位置传给静态变

33、量Toast.makeText(Address_Book.this, 想CLICK_ID / ); public void onNothingSelected(AdapterView parent) +LIST.get(CLICK_ID).get(name).toString+啦, 1).show; System.out.println(-Selected选中-CLICK_ID-: + CLICK_ID ); /点击后显示背景色红色 if (ListView)parent).getTag != null) (View)(ListView)parent).getTag).setBackgroun

34、dDrawable(null); (ListView)parent).setTag(view); view.setBackgroundColor(Color.GREEN); /= /=重写Activity中的主菜单监听事件的方法,根据按下的菜单做相应处理Override public boolean onOptionsItemSelected(MenuItem item) if(item.getItemId = 0) /从手机中导入联系人 Toast.makeText(Address_Book.this, 正在导入,请稍后, 3).show; getContactInformation; /将

35、手机上的联系人导入列表 Toast.makeText(Address_Book.this, 导入完成, 3).show; Intent intent = new Intent(Address_Book.this,Address_Book.class); startActivity(intent); Override public boolean onCreateOptionsMenu(Menu menu) /添加菜单方法2 /第一个参数:组 /第一个参数:id /第一个参数:排序 /第一个参数:菜单名字 menu.add(0,0, 0, 从手机导入联系人).setIcon(R.drawable

36、.go); menu.add(0,2, 0, 快速查询).setIcon(R.drawable.jiji); menu.add(0,3, 0, 删除联系人).setIcon(R.drawable.jiji); menu.add(0,4, 0, 拨号).setIcon(R.drawable.laoren); menu.add(0,5, 0, 发送短信).setIcon(R.drawable.jiji); menu.add(0,6, 0, 修改联系人).setIcon(R.drawable.jiji); /添加菜单方法3 /inflater过滤器,后面的menu是public boolean on

37、CreateOptionsMenu(Menu menu)传进来的 /前面的menu是引用自己新建的menu.xml文件的ID,里面设置好了所有菜单 MenuInflater inflater = getMenuInflater; inflater.inflate(R.menu.menu, menu); */ return true; 重写Activity中创建菜单的方法= menu.add(0,1, 0, 添加联系人).setIcon(R.drawable.go).setShortcut(1, b); /b是快捷键 /* = 号码传过去 名字传过去 else if(item.getItemId

38、 = 1) /添加联系人,转到另一个Activity Intent intent = new Intent; intent.setClass(Address_Book.this,Add_people.class); intent.putExtra(nothing1, 1); startActivityForResult(intent, REQUESCODE1); else if(item.getItemId = 2) /快速查找,弹出对话框 dialogShow; /显示对话框快速查找 else if(item.getItemId = 3) /删除联系人 if(CLICK_ID != 600)

39、 dialogShow_dele; else Toast.makeText(Address_Book.this, 请选择需要删除的联系人, 1).show; else if(item.getItemId = 4) /拨号 if(CLICK_ID != 600) Intent intent = new Intent; Uri uri ; String data ; data = tel:+LIST.get(CLICK_ID).get(phone).toString; uri = Uri.parse(data); intent.setAction(Intent.ACTION_CALL); intent.setData(uri); startActivity(intent); else Toast.makeText(Address_Book.this, 请选择一个号码, 1).show; else if(item.getItemId = 5) /发送短信 if(CLICK_ID != 60

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号