1、Android 课程设计报告一、概述 如今移动手持设备发展速度越来越快,支持功能越来越多。不少的PC应用被移植到手持设备上来,这也个用户带来了相当多的方便。当然邮箱也不例外,被做到移动手持设备上来。电子邮件是互联网最基本、但却是最重要的组成部分,通过电子邮件进行方便、快捷的信息交流,已经逐渐成为日常生活和工作中不可或缺的行为习惯。2、项目设计与实现1、JavaMail编程简介 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outloo
2、k的应用程序。 虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。 JavaMail是可选包,因此如果需要使用的话你需要首先从下载。目前最新版
3、本是JavaMail1.4,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下。这样JavaMail就安装好了。 JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties
4、中读取类似于邮件服务器,用户名和密码等信息。2、功能模块的实现1、 登陆用户使用自己的邮箱名和密码来登陆系统,这里只是做格式的验证,存储于全局Application变量中,作为发邮件者,用户还可已选择记住登陆信息,来存储本次的登陆信息于SharedPreferences文件中,以方便下一次登陆。信息通过验证则会记录主功能页面:2、 联系人管理使用该软件进行邮件的发送是要先设置联系人也就是收件人,点击联系人将进入联系人管理页面在该页面可以对联系人进行一系列的操作:添加联系人:点击menu,会出现一个功能菜单:点击添加项:一定要正确填写数据,才可以通过。列表会立刻刷新:删除联系人:长按某一条要删除
5、的信息将有删除提示:点击确定该条信息将被删除。查找联系人:中文可以通过首字母匹配查询,备注名称和邮件地址可以通过模糊查询来实现快速的查找。点击menu的说明菜单会出现该界面上功能的使用说明:3、 写信主菜单点击写信将进入写信页面点击Menu将出现该写信功能的使用说明项和退出项:点击使用说明会有该页面的详细使用说明。添加收件人:点击页面上的添加图片进入联系人列表,在这里可以选择收件人支持群发。点击确定按钮回到写信页面,发给后回出现选择的收件人:点击右上角的红色叉号可以将对应收件人删除掉。标题可以写也可以不写,不写将使用默认标题,那内容填否也是可选的:点击添加附件将进入文件管理页面,选择需要传送的
6、文件作为附件:选择一个图片,将其发送。点击确定按钮将进行文件的发送。查看邮箱:3、功能模块实现的核心代码1、 使用SharedPreferences存储简单文本信息。 if(checkBox.isChecked() /存储 SharedPreferences shared = this.getSharedPreferences(login, Context.MODE_PRIVATE); SharedPreferences.Editor editor = shared.edit(); editor.putString(name, emailNo); editor.putString(passwo
7、rd, password); editor.putBoolean(isJz, true); mit(); else /清空 SharedPreferences shared = this.getSharedPreferences(login, Context.MODE_PRIVATE); SharedPreferences.Editor editor = shared.edit(); editor.clear(); mit(); 2、扩展Application来实现存储全局变量public class BMSApplication extends Application private Use
8、r user; List personList ; public User getUser() return user; public void setUser(User user) this.user = user; public List getPersonList() return personList; public void setPersonList(List personList) this.personList = personList; 3、使用Sqlite数据库对联系人进行存储,并使用Android相应类对其进行增删操作。public class DbHelper exte
9、nds SQLiteOpenHelper public DbHelper(Context context, String name, CursorFactory factory, int version) super(context, name, factory, version); / TODO Auto-generated constructor stub Override public void onCreate(SQLiteDatabase db) / TODO Auto-generated method stub String sql = create table IF NOT EX
10、ISTS info(_id integer primary key autoincrement ,name varchar(50),email varchar(100); db.execSQL(sql); Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) / TODO Auto-generated method stub public static void addPerson(Activity context,Person person) DbHelper dbHelper =
11、new DbHelper(context, threed.db, null, 1); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues value = new ContentValues(); value.put(name, person.getName(); value.put(email,person.getEmail(); db.insert(info,null,value); db.close(); public static void deletePerson(Activity context,int
12、id) DbHelper dbHelper = new DbHelper(context, threed.db, null, 1); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete(info, _id=?, new Stringid+); db.close(); public static List getAllPerson(Activity context) List list = new ArrayList(); DbHelper dbHelper = new DbHelper(context, threed.db
13、, null, 1); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query(info, null, null, null, null, null,null); while(cursor.moveToNext() int id = cursor.getInt(0); String name = cursor.getString(1); String email = cursor.getString(2); Person person = new Person(); person.setId(id
14、); person.setEmail(email); person.setName(name); list.add(person); cursor.close(); db.close(); return list; 4、使用java File类进行文件的管理private void getFileDir(String filePath) mPath.setText(filePath); items = new ArrayList(); paths = new ArrayList(); / 声明该路径所对应的文件对象 File f = new File(filePath); / 返回该路径下所有
15、的文件 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 (int i = 0; i files.length; i+) File file = filesi; items.add(file.getName(); paths.add(file.get
16、Path(); / 用两个路径集合添加适配器 setListAdapter(new MyAdapter(this, items, paths);5、使用java mail进行邮件的传送public void send(String str_title, String str_body,String str_from_mail, String str_to_mail, String str_file_path) if(str_body.equals()|str_body=null) str_body= ; if(str_file_path.equals()|str_file_path=null)
17、 /无附件 try sendMail(str_title, str_body,str_from_mail, str_to_mail); catch (Exception e) / TODO Auto-generated catch block 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等。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1