安卓通讯录实训报告.docx
《安卓通讯录实训报告.docx》由会员分享,可在线阅读,更多相关《安卓通讯录实训报告.docx(18页珍藏版)》请在冰豆网上搜索。
安卓通讯录实训报告
安卓通讯录实训报告
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
安卓实训设计报告
安卓通讯录
设计题目:
安卓通讯录
班级:
姓名:
学号:
指导老师:
日期:
2012年6月7日
-1-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
内容要求
一、题目分析,功能要求。
1.1实验目的
熟悉Android软件开发的基本架构
利用Eclipse和ADT插件设计通讯录
1.2功能
本手机通讯录工具主要实现五大功能:
联系人的查询:
字段查询,分
组查询,字母排序查询;增加、删除联系人以及修改联系人信息;导入、
导出联系人;发送联系人信息;设置。
二、实验设计
2.1UI设计
我们用一个ListView来显示整个通讯录,其中用TextView显示每一
记录,他们的xml文件分别为:
main.xml(通讯录主界面),addres.xml(添
加联系人界面),list_item.xml(浏览联系人界面),find.xml(查找联系
人界面)。
2.2数据库的设计
Android中的android.database.sqlite.SQLiteOpenHelper类是一
个专门用于数据库创建和版本管理的辅助类。
因此,为了更好的管理数据
库,这里我们创建一个继承自SQLiteOpenHelper的辅助类DBHelper来维
护和更新数据库。
2.3功能的设计
为了在主界面中浏览联系人的信息,并且创建主要菜单栏,我们设计
了MainActivity类,主要用于显示联系人信息和菜单栏,通过菜单栏,
实现通讯录的相关功能。
AddressBook类主要是为了实现联系人的添加功
能,并且实现信息的保存后跳转到主界面。
Findactivity类主要是为了实
现联系人的查找功能,输入联系人的姓名,点击查找按钮,显示所查联系
-2-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
人的相关信息。
三、实验程序
见附录一。
四、实验效果图
-3-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
五、总结
通过设计该通讯录,主要学习了UI设计、数据库的综合操作、动态
菜单的使用以及各种权限的注册。
通过本次设计,使我对Android平台的
数据库操作有了更进一步的理解,同时也对Android系统有了更深入的了
解。
-4-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
附录一
//定义数据
publicclassContactColumnimplementsBaseColumns{
publicContactColumn()
{
}
//列名
publicstaticfinalStringNAME="name";//姓名
publicstaticfinalStringMOBILENUM="mobileNumber";//移动电话
publicstaticfinalStringHOMENUM="homeNumber";//家庭电话
publicstaticfinalStringADDRESS="address";//地址
publicstaticfinalStringEMAIL="email";//邮箱
publicstaticfinalStringBLOG="blog";//博客
//列索引值
publicstaticfinalint_ID_COLUMN=0;
publicstaticfinalintNAME_COLUMN=1;
publicstaticfinalintMOBILENUM_COLUMN=2;
publicstaticfinalintHOMENUM_COLUMN=3;
publicstaticfinalintADDRESS_COLUMN=4;
publicstaticfinalintEMAIL_COLUMN=5;
publicstaticfinalintBLOG_COLUMN=6;
//查询结果
publicstaticfinalString[]PROJECTION={
_ID,
NAME,
MOBILENUM,
HOMENUM,
ADDRESS,
EMAIL,
BLOG,
};
}
publicclassDBHelperextendsSQLiteOpenHelper{
publicstaticfinalStringDATABASE_NAME="mycontacts.db";//数据库名
publicstaticfinalintDATABASE_VERSION=2;//版本
publicstaticfinalStringCONTACTS_TABLE="contacts";//表名
//创建表
privatestaticfinalStringDATABASE_CREATE=
"CREATETABLE"+CONTACTS_TABLE+"("
+ContactColumn._ID+"integerprimarykeyautoincrement,"
+ContactColumn.NAME+"text,"
+ContactColumn.MOBILENUM+"text,"
-5-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
+ContactColumn.HOMENUM+"text,"
+ContactColumn.ADDRESS+"text,"
+ContactColumn.EMAIL+"text,"
+ContactColumn.BLOG+"text);";
publicDBHelper(Contextcontext)
{
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
publicvoidonCreate(SQLiteDatabasedb)
{
db.execSQL(DATABASE_CREATE);
}
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)
{
db.execSQL("DROPTABLEIFEXISTS"+CONTACTS_TABLE);
onCreate(db);
}
}
//URI类型转换
publicStringgetType(Uriuri)
{
switch(uriMatcher.match(uri))
{
caseCONTACTS:
return"vnd.android.cursor.dir/vnd.yarin.android.mycontacts";
caseCONTACT_ID:
return"vnd.android.cursor.item/vnd.yarin.android.mycontacts";
default:
thrownewIllegalArgumentException("UnsupportedURI:
"+uri);
}
}
//删除指定数据列
@Override
publicintdelete(Uriuri,Stringwhere,String[]selectionArgs)
{
intcount;
switch(uriMatcher.match(uri))
{
caseCONTACTS:
count=contactsDB.delete(CONTACTS_TABLE,where,selectionArgs);
break;
caseCONTACT_ID:
StringcontactID=uri.getPathSegments().get
(1);
count=contactsDB.delete(CONTACTS_TABLE,
ContactColumn._ID
+"="+contactID
-6-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
+(!
TextUtils.isEmpty(where)?
"AND("+where+")":
""),
selectionArgs);
break;
default:
thrownewIllegalArgumentException("UnsupportedURI:
"+uri);
}
getContext().getContentResolver().notifyChange(uri,null);
returncount;
}
//插入数据
publicUriinsert(Uriuri,ContentValuesinitialValues)
{
if(uriMatcher.match(uri)!
=CONTACTS)
{
thrownewIllegalArgumentException("UnknownURI"+uri);
}
ContentValuesvalues;
if(initialValues!
=null)
{
values=newContentValues(initialValues);
Log.e(TAG+"insert","initialValuesisnotnull");
}
else
{
values=newContentValues();
}
//设置默认值
if(values.containsKey(ContactColumn.NAME)==false)
{
values.put(ContactColumn.NAME,"");
}
if(values.containsKey(ContactColumn.MOBILENUM)==false)
{
values.put(ContactColumn.MOBILENUM,"");
}
if(values.containsKey(ContactColumn.HOMENUM)==false)
{
values.put(ContactColumn.HOMENUM,"");
}
if(values.containsKey(ContactColumn.ADDRESS)==false)
{
values.put(ContactColumn.ADDRESS,"");
}
if(values.containsKey(ContactColumn.EMAIL)==false)
{
values.put(ContactColumn.EMAIL,"");
-7-
电子与信息工程学院计算机科学与技术系开放与创新实验设计报告
}
i