安卓通讯录实训报告Word文件下载.docx
- 文档编号:22079937
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:363.52KB
安卓通讯录实训报告Word文件下载.docx
《安卓通讯录实训报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《安卓通讯录实训报告Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
我们用一个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+"
+ContactColumn.HOMENUM+"
+ContactColumn.ADDRESS+"
+ContactColumn.EMAIL+"
+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:
vnd.android.cursor.item/vnd.yarin.android.mycontacts"
default:
thrownewIllegalArgumentException("
UnsupportedURI:
"
+uri);
}
//删除指定数据列
@Override
publicintdelete(Uriuri,Stringwhere,String[]selectionArgs)
intcount;
count=contactsDB.delete(CONTACTS_TABLE,where,selectionArgs);
break;
StringcontactID=uri.getPathSegments().get
(1);
count=contactsDB.delete(CONTACTS_TABLE,
ContactColumn._ID
+"
="
+contactID
+(!
TextUtils.isEmpty(where)?
AND("
+where+"
)"
:
),
selectionArgs);
getContext().getContentResolver().notifyChange(uri,null);
returncount;
//插入数据
publicUriinsert(Uriuri,ContentValuesinitialValues)
if(uriMatcher.match(uri)!
=CONTACTS)
thrownewIllegalArgumentException("
UnknownURI"
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+"
values.toString());
longrowId=contactsDB.insert(CONTACTS_TABLE,null,values);
if(rowId>
0)
UrinoteUri=ContentUris.withAppendedId(CONTENT_URI,rowId);
getContext().getContentResolver().notifyChange(noteUri,null);
noteUri.toString());
returnnoteUri;
thrownewSQLException("
Failedtoinsertrowinto"
//更新数据库
publicintupdate(Uriuri,ContentValuesvalues,Stringwhere,String[]selectionArgs)
update"
uri.toString());
update:
match"
+uriMatcher.match(uri));
Log.e(TAG+"
CONTACTS+"
count=contactsDB.update(CONTACTS_TABLE,values,where,selectionArgs);
contactID+"
count=contactsDB.update(CONTACTS_TABLE,values,ContactColumn._ID+"
+contactID
+(!
),selectionArgs);
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]!
{
//编辑联系人
items[0].setShortcut('
1'
'
e'
).setIcon(R.drawable.edituser).setTitle(R.string.editor_user);
}
if(items[1]!
//查看联系人
items[1].setShortcut('
2'
f'
).setTitle(R.string.view_user).setIcon(R.drawable.viewuser);
menu.removeGroup(Menu.CATEGORY_ALTERNATIVE);
returntrue;
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
manifestxmlns:
android="
package="
com.yarin.android.MyContacts"
android:
versionCode="
1"
versionName="
<
applicationandroid:
icon="
@drawable/icon"
label="
@string/app_name"
providerandroid:
name="
ContactsProvider"
authorities="
com.yarin.android.provider.ContactsProvider"
/>
activityandroid:
.MyContacts"
intent-filter>
actionandroid:
android.intent.action.MAIN"
/>
categoryandroid:
android.intent.category.LAUNCHER"
/intent-filter>
/activity>
.ContactEditor"
@string/editor_user"
android.intent.action.EDIT"
android.intent.category.DEFAULT"
dataandroid:
mimeType="
android.intent.action.INSERT"
.ContactView"
@string/view_user"
android.intent.action.VIEW"
/application>
uses-permissionandroid:
android.permission.CALL_PHONE"
/uses-permission>
android.permission.SEND_SMS"
<
android.permission.RECEIVE_SMS"
uses-sdkandroid:
minSdkVersion="
5"
/manifest>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 报告