安卓通讯录实训报告.docx

上传人:b****7 文档编号:8943800 上传时间:2023-02-02 格式:DOCX 页数:12 大小:363.52KB
下载 相关 举报
安卓通讯录实训报告.docx_第1页
第1页 / 共12页
安卓通讯录实训报告.docx_第2页
第2页 / 共12页
安卓通讯录实训报告.docx_第3页
第3页 / 共12页
安卓通讯录实训报告.docx_第4页
第4页 / 共12页
安卓通讯录实训报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

安卓通讯录实训报告.docx

《安卓通讯录实训报告.docx》由会员分享,可在线阅读,更多相关《安卓通讯录实训报告.docx(12页珍藏版)》请在冰豆网上搜索。

安卓通讯录实训报告.docx

安卓通讯录实训报告

 

安卓实训设计报告

安卓通讯录

设计题目:

安卓通讯录

班级:

姓名:

学号:

指导老师:

日期:

2012年6月7日

 

内容要求

一、题目分析,功能要求。

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类主要是为了实现联系人的查找功能,输入联系人的姓名,点击查找按钮,显示所查联系人的相关信息。

三、实验程序

见附录一。

四、实验效果图

五、总结

通过设计该通讯录,主要学习了UI设计、数据库的综合操作、动态菜单的使用以及各种权限的注册。

通过本次设计,使我对Android平台的数据库操作有了更进一步的理解,同时也对Android系统有了更深入的了解。

 

附录一

//定义数据

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,"

+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

+(!

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,"");

}

if(values.containsKey(ContactColumn.BLOG)==false)

{

values.put(ContactColumn.BLOG,"");

}

Log.e(TAG+"insert",values.toString());

longrowId=contactsDB.insert(CONTACTS_TABLE,null,values);

if(rowId>0)

{

UrinoteUri=ContentUris.withAppendedId(CONTENT_URI,rowId);

getContext().getContentResolver().notifyChange(noteUri,null);

Log.e(TAG+"insert",noteUri.toString());

returnnoteUri;

}

thrownewSQLException("Failedtoinsertrowinto"+uri);

}

//更新数据库

publicintupdate(Uriuri,ContentValuesvalues,Stringwhere,String[]selectionArgs)

{

intcount;

Log.e(TAG+"update",values.toString());

Log.e(TAG+"update",uri.toString());

Log.e(TAG+"update:

match",""+uriMatcher.match(uri));

switch(uriMatcher.match(uri))

{

caseCONTACTS:

Log.e(TAG+"update",CONTACTS+"");

count=contactsDB.update(CONTACTS_TABLE,values,where,selectionArgs);

break;

caseCONTACT_ID:

StringcontactID=uri.getPathSegments().get

(1);

Log.e(TAG+"update",contactID+"");

count=contactsDB.update(CONTACTS_TABLE,values,ContactColumn._ID+"="+contactID

+(!

TextUtils.isEmpty(where)?

"AND("+where+")":

""),selectionArgs);

break;

default:

thrownewIllegalArgumentException("UnsupportedURI:

"+uri);

}

getContext().getContentResolver().notifyChange(uri,null);

returncount;

}

}

publicbooleanonPrepareOptionsMenu(Menumenu)

{

super.onPrepareOptionsMenu(menu);

finalbooleanhaveItems=getListAdapter().getCount()>0;

if(haveItems)

{

Uriuri=ContentUris.withAppendedId(getIntent().getData(),getSelectedItemId());

Intent[]specifics=newIntent[2];

specifics[0]=newIntent(Intent.ACTION_EDIT,uri);

specifics[1]=newIntent(Intent.ACTION_VIEW,uri);

MenuItem[]items=newMenuItem[2];

//添加满足条件的菜单

Intentintent=newIntent(null,uri);

intent.addCategory(Intent.CATEGORY_ALTERNATIVE);

menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE,0,0,null,specifics,intent,0,items);

if(items[0]!

=null)

{

//编辑联系人

items[0].setShortcut('1','e').setIcon(R.drawable.edituser).setTitle(R.string.editor_user);

}

if(items[1]!

=null)

{

//查看联系人

items[1].setShortcut('2','f').setTitle(R.string.view_user).setIcon(R.drawable.viewuser);

}

}

else

{

menu.removeGroup(Menu.CATEGORY_ALTERNATIVE);

}

returntrue;

}

xmlversion="1.0"encoding="utf-8"?

>

android="

package="com.yarin.android.MyContacts"

android:

versionCode="1"

android:

versionName="1.0">

icon="@drawable/icon"android:

label="@string/app_name">

name="ContactsProvider"

android:

authorities="com.yarin.android.provider.ContactsProvider"/>

name=".MyContacts"

android:

label="@string/app_name">

name="android.intent.action.MAIN"/>

name="android.intent.category.LAUNCHER"/>

name=".ContactEditor"

android:

label="@string/editor_user">

name="android.intent.action.EDIT"/>

name="android.intent.category.DEFAULT"/>

mimeType="vnd.android.cursor.item/vnd.yarin.android.mycontacts"/>

name="android.intent.action.INSERT"/>

name="android.intent.category.DEFAULT"/>

mimeType="vnd.android.cursor.dir/vnd.yarin.android.mycontacts"/>

name=".ContactView"

android:

label="@string/view_user">

name="android.intent.action.VIEW"/>

name="android.intent.category.DEFAULT"/>

mimeType="vnd.android.cursor.item/vnd.yarin.android.mycontacts"/>

name="android.intent.category.DEFAULT"/>

mimeType="vnd.android.cursor.dir/vnd.yarin.android.mycontacts"/>

name="android.permission.CALL_PHONE">

name="android.permission.SEND_SMS">

name="android.permission.RECEIVE_SMS"/>

minSdkVersion="5"/>

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

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1