Android 课程设计报告.docx
《Android 课程设计报告.docx》由会员分享,可在线阅读,更多相关《Android 课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
![Android 课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-2/1/c9080b86-8ab1-498d-bfac-1f310936226e/c9080b86-8ab1-498d-bfac-1f310936226e1.gif)
Android课程设计报告
一、概述
如今移动手持设备发展速度越来越快,支持功能越来越多。
不少的PC应用被移植到手持设备上来,这也个用户带来了相当多的方便。
当然邮箱也不例外,被做到移动手持设备上来。
电子邮件是互联网最基本、但却是最重要的组成部分,通过电子邮件进行方便、快捷的信息交流,已经逐渐成为日常生活和工作中不可或缺的行为习惯。
2、项目设计与实现
1、JavaMail编程简介
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。
它是Sun发布的用来处理email的API。
它可以方便地执行一些常用的邮件传输。
我们可以基于JavaMail开发出类似于MicrosoftOutlook的应用程序。
虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(JavaDevelopmentKit),这就意味着你在使用前必须另外下载JavaMail文件。
除此以外,你还需要有Sun的JavaBeansActivationFramework(JAF)。
JavaBeansActivationFramework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。
在Windows2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。
JavaMail是可选包,因此如果需要使用的话你需要首先从下载。
目前最新版本是JavaMail1.4,使用JavaMail的时候需要JavabeanActivationFramework的支持,因此你也需要下载JAF。
安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下。
这样JavaMail就安装好了。
JavaMail包中用于处理电子邮件的核心类是:
Session,Message,Address,Authenticator,Transport,Store,Folder等。
Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。
2、功能模块的实现
1、登陆
用户使用自己的邮箱名和密码来登陆系统,这里只是做格式的验证,存储于全局Application变量中,作为发邮件者,用户还可已选择记住登陆信息,来存储本次的登陆信息于SharedPreferences文件中,以方便下一次登陆。
信息通过验证则会记录主功能页面:
2、联系人管理
使用该软件进行邮件的发送是要先设置联系人也就是收件人,点击联系人将进入联系人管理页面
在该页面可以对联系人进行一系列的操作:
添加联系人:
点击menu,会出现一个功能菜单:
点击添加项:
一定要正确填写数据,才可以通过。
列表会立刻刷新:
删除联系人:
长按某一条要删除的信息将有删除提示:
点击确定该条信息将被删除。
查找联系人:
中文可以通过首字母匹配查询,备注名称和邮件地址可以通过模糊查询来实现快速的查找。
点击menu的说明菜单会出现该界面上功能的使用说明:
3、写信
主菜单点击写信将进入写信页面
点击Menu将出现该写信功能的使用说明项和退出项:
点击使用说明会有该页面的详细使用说明。
添加收件人:
点击页面上的添加图片进入联系人列表,在这里可以选择收件人支持群发。
点击确定按钮回到写信页面,发给后回出现选择的收件人:
点击右上角的红色叉号可以将对应收件人删除掉。
标题可以写也可以不写,不写将使用默认标题,那内容填否也是可选的:
点击添加附件将进入文件管理页面,选择需要传送的文件作为附件:
选择一个图片,将其发送。
点击确定按钮将进行文件的发送。
查看邮箱:
3、功能模块实现的核心代码
1、使用SharedPreferences存储简单文本信息。
if(checkBox.isChecked()){
//存储
SharedPreferencesshared=this.getSharedPreferences("login",Context.MODE_PRIVATE);
SharedPreferences.Editoreditor=shared.edit();
editor.putString("name",emailNo);
editor.putString("password",password);
editor.putBoolean("isJz",true);
mit();
}else{
//清空
SharedPreferencesshared=this.getSharedPreferences("login",
Context.MODE_PRIVATE);
SharedPreferences.Editoreditor=shared.edit();
editor.clear();
mit();
}
2、扩展Application来实现存储全局变量
publicclassBMSApplicationextendsApplication{
privateUseruser;
ListpersonList;
publicUsergetUser(){
returnuser;
}
publicvoidsetUser(Useruser){
this.user=user;
}
publicListgetPersonList(){
returnpersonList;
}
publicvoidsetPersonList(ListpersonList){
this.personList=personList;
}
}
3、使用Sqlite数据库对联系人进行存储,并使用Android相应类对其进行增删操作。
publicclassDbHelperextendsSQLiteOpenHelper{
publicDbHelper(Contextcontext,Stringname,CursorFactoryfactory,
intversion){
super(context,name,factory,version);
//TODOAuto-generatedconstructorstub
}
@Override
publicvoidonCreate(SQLiteDatabasedb){
//TODOAuto-generatedmethodstub
Stringsql="createtableIFNOTEXISTSinfo(_idintegerprimarykeyautoincrement,namevarchar(50),emailvarchar(100))";
db.execSQL(sql);
}
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
//TODOAuto-generatedmethodstub
}
publicstaticvoidaddPerson(Activitycontext,Personperson){
DbHelperdbHelper=newDbHelper(context,"threed.db",null,1);
SQLiteDatabasedb=dbHelper.getWritableDatabase();
ContentValuesvalue=newContentValues();
value.put("name",person.getName());
value.put("email",person.getEmail());
db.insert("info",null,value);
db.close();
}
publicstaticvoiddeletePerson(Activitycontext,intid){
DbHelperdbHelper=newDbHelper(context,"threed.db",null,1);
SQLiteDatabasedb=dbHelper.getWritableDatabase();
db.delete("info","_id=?
",newString[]{id+""});
db.close();
}
publicstaticListgetAllPerson(Activitycontext){
Listlist=newArrayList();
DbHelperdbHelper=newDbHelper(context,"threed.db",null,1);
SQLiteDatabasedb=dbHelper.getWritableDatabase();
Cursorcursor=db.query("info",null,null,null,null,null,null);
while(cursor.moveToNext()){
intid=cursor.getInt(0);
Stringname=cursor.getString
(1);
Stringemail=cursor.getString
(2);
Personperson=newPerson();
person.setId(id);
person.setEmail(email);
person.setName(name);
list.add(person);
}
cursor.close();
db.close();
returnlist;
}
4、使用javaFile类进行文件的管理
privatevoidgetFileDir(StringfilePath){
mPath.setText(filePath);
items=newArrayList();
paths=newArrayList();
//声明该路径所对应的文件对象
Filef=newFile(filePath);
//返回该路径下所有的文件
File[]files=f.listFiles();
//如果该路径不是根路径,执行如下操作
if(!
filePath.equals(rootPath)){
items.add("b1");
paths.add(rootPath);
items.add("b2");
paths.add(f.getParent());
}
//遍历该路径下所有文件,并放入两个集合中
if(files!
=null){
for(inti=0;iFilefile=files[i];
items.add(file.getName());
paths.add(file.getPath());
}
}
//用两个路径集合添加适配器
setListAdapter(newMyAdapter(this,items,paths));
5、使用javamail进行邮件的传送
publicvoidsend(Stringstr_title,Stringstr_body,Stringstr_from_mail,Stringstr_to_mail,Stringstr_file_path){
if(str_body.equals("")||str_body==null){
str_body="";
}
if(str_file_path.equals("")||str_file_path==null){
//无附件
try{
sendMail(str_title,str_body,str_from_mail,str_to_mail);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}else{
//有附件
send_mail_file(str_title,str_body,str_from_mail,str_to_mail,str_file_path);
}
3、心得体会
通过这个软件的实现,我对Android编程有了更加浓厚的兴趣,对Android中的常用类和接口有了进一步的认识。
对编程有了一种新的看法,编程在我的学习中不再是那样的枯燥无味,而是时时刻刻充满惊喜。
虽然这是一个挺小的项目但它对我在编程方面起到了一种激励的作用。
我会在此基础上更加努力做出更好的程序。
4、参考文献
《李刚Android疯狂讲义》
5、致谢如
在此特别感谢程序编写过程中老师耐心指导和同学们的热心帮助,他们在我写程序过程中给了我很大的帮助。
此外还要感谢一些论坛上的朋友对我的帮助如:
csdn、51cto等。