Android实验报告_基于SQLite的通信录

合集下载

系统分析设计安卓通讯录课程设计报告书

系统分析设计安卓通讯录课程设计报告书

2015-2016学年第1学期《系统分析与设计》课程设计项目名称:基于安卓系统的手机通讯录指导教师:王娟班级:13级Java1班学生名单:第一章项目介绍选题:鉴于本次课程设计的目的是通过一些实际的例子,培养学生分析和解决实际问题的能力,培养学生综合应用基本概念、基本原理和技术方法的能力,真正做到学以致用,使课本上抽象的理论、方法与具体的实践应用相结合,所以我们组选择了安卓通讯录这个课题。

背景:Android本意词是指“机器人”,同时也是Goole于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,Android是一种基于Linux的自由及开放源代码的操作系统,Android以其自由开放源代码的特点而成为最热门的智能手机。

在这个信息化的时代,手机已成为继固话之后最为通俗的交流工具,“通讯”成了生活的必需品,这就有了系统下人与人之间的多样联系方式——手机通讯录。

传统通讯录以纸张为载体,将需要记录的联系人一一人登记在册,包括地址、联系方式等,再在需要时进行翻阅查询。

手机通讯录,在手机系统下,占用手机相对很小的空间,系统的记录联系人的联系方式及其他信息,不仅突破了各种条件的舒服,减轻了机主的负担,更方便了使用者的通讯。

综上所述,手机通讯录管理系统是一个高效、实时、绿色环保的管理系统。

然而现在很多通讯录外观花哨、功能单一或形同虚设。

针对以上各种弊端,我们通过需求分析等着手设计一款简单方便的通讯录。

项目:本项目的设计工作如下:选题、分组、任务划分,需求建模(需求基本描述,用例图和用例描述),系统分析(查找分析类,序列图和活动图),系统设计(功能设计——程序流程图,数据库设计,界面设计——原型图)。

本项目使用eclipse开发平台,并连接使用SQlite数据库编写。

分为后台数据库的建立和维护,以及前端应用程序的开发两个部分,主要包括添加、删除、修改联系人姓名、电话、住址等。

组员分工:需求分析(用例描述):杨赓系统分析(时序图、协作图、类图):张坤鹏郑四林王文凯王浩系统设计(数据库、界面设计):王浩整理总结:王浩第二章需求分析2.1 基本功能需求(1) 用户通过联系人功能可以保存联系人的详细信息,可以对联系人进行编辑、删除,可以根据索引条件搜索联系人。

基于Android的通讯录实时同步功能

基于Android的通讯录实时同步功能

基于Android的通讯录实时同步功能陆少鹏;周渊平【摘要】随着Android系统的不断发展,Android系统被应用在各种设备上面,包括将Android系统应用到有线电话上.因此需要开发一个通讯录能够在搭载了Android系统的有线电话和手机之间实现数据实时同步.通讯录的客户端和服务端是通过Socket来建立连接的,然后采用Handler机制发送数据和读取数据,实现了通讯录数据的实时同步.经过测试,通讯录实现了手机与有线电话的通话记录,增加、修改和删除联系人的实时同步功能.%With the continuous development of Android system, the Android system has been used in a variety of devices, including applying to wire telephones. Therefore, we need to develop a contact which has the real-time synchronization function between wire telephone and mobile phone equipped with Android system. The contact establishes connection between client and server by using Socket, and using Handler mechanism to send data and read data, as a result, it realizes the function of the real-time synchronization for contact data. The test shows the contact achieves the goal of the real-time synchronization function of calling records, adding, modifying and deleting contacts between mobile phone and wire telephone.【期刊名称】《计算机系统应用》【年(卷),期】2017(026)005【总页数】5页(P257-261)【关键词】Android;通讯录;实时同步;socket;Handler【作者】陆少鹏;周渊平【作者单位】四川大学电子信息学院, 成都 610065;四川大学电子信息学院, 成都610065【正文语种】中文日常办公通讯通常使用固定电话,它具有抗干扰能力强,通话质量好,保密性高的特点,最突出的是辐射小[1],因此在室内办公时,用户更加趋向于使用有线电话.在这种情况下,将手机和有线电话的通讯录结合开发,实现在室外办公时能够实时同步有线电话的未接来电信息,方便即时回复未接来电,在室内办公时也能够实时同步手机的未接来电和联系人信息,方便电话拨打.目前的通讯录同步是为了解决一个用户的不同终端设备的用户数据备份不一致给用户带来不便的问题,需要用户手动上传和下载用户数据才能够实现通讯录同步[2].现在Android系统的通讯录同步比较典型的应用是小米云同步服务,其包括了通话记录同步、便签同步和短信等用户数据的同步[3],但是小米云同步也需要手动上传和下载数据进行数据同步,并不是自动进行同步的,而且是实现手机与手机之间或者是手机与平板电脑之间的数据同步.本文所做的通讯录的实时同步和现在的通讯录同步不同的是,该通讯录实现的是实时的和自动的通讯录数据同步,因此实时性比现有的通讯录同步好,由于是自动实现通讯录数据同步,所以该通讯录同步操作比现有的通讯录同步简便.而且同步的是手机和有线电话的通讯录数据库数据方便室内外的办公.本文所介绍的有线电话是由搭载了Android4.0操作系统的TQ210开发板实现的,具备了拨号的功能. Android系统架构采用了分层架构,从高层到低层依次分为应用程序层、应用程序框架层、系统运行库层和Linux核心层[4,5],如图1.应用程序层所有的程序都是JAVA语言所编写,通过调用应用程序框架层所提供的API来完成的[6]. Android的系统运行库层分为程序库和Android运行库.程序库主要包含一些C/C++库,这些库能够被Android系统的不同组件使用,它们通过应用程序框架层给开发者提供服务.Android运行库提供Java变成语言核心库大部分功能.Android的 Linux核心层是基于Linux2.6内核的,是硬件和软件之间的抽象层.通讯录同步系统主要分为客户端和服务器端,它们之间通过Socket建立连接.常用的Socket有两种:流式Socket和数据报式Socket.流式Socket是一种面向连接的TCP服务应用,数据报式Socket是一种无连接的UDP服务应用.通讯录的实时同步功能的客户端和服务端是采用了流式Socket,其原理框图如图2所示.由图2可知,通讯录的实时同步分为两个方向,分别为:手机端实时同步有线电话的通讯录数据和有线电话实时同步手机端的通讯录数据.当有线电话端的通讯录数据库发生变化时,有线电话端就会将发生变化的数据转换成输出流,并将该输出流发送给服务器端,服务器端读取到该输出流数据后将它转换为输出流供手机端读取该同步数据,该过程实现了手机端实时同步有线电话端的通讯录数据,如图2中灰色线过程.有线电话端实时同步手机端通讯录数据的过程就是红色线过程,即当手机端的通讯录数据库发生变化时,手机端就将变化的数据转换成输出流并将该输出流发生给服务器端,服务器端读取到该数据后再将该数据转换为输出流供有线电话端读取同步数据,最终实现有线电话通讯录实时同步手机端的通讯录数据.通讯录的的实时同步功能主要包括四个部分:通话记录、添加联系人、删除联系人和修改联系人的实时同步.客户端的程序流程图如图3.客户端的实现主要分为两个部分,一个部分是判断客户端是否连接网络,连接网络就将同步数据发送到服务器端,未连接网络就将同步数据存到SQLite数据库中.另一部分就是要实时监听通讯录数据库的数据变化,有数据变化时就发送数据到服务端,没有数据变化时就处于不断监听状态.客户端为了能够将同步数据发送到服务器端需要处于连接网络的状态,所以,在发送数据之前必须先检查客户端是否连接网络.客户端用getSystemService (Context.CONNECTIVITY_SERVICE)方法来获取ConnectivityManger类的对象,然后再通过该对象的getAllNetworkInfo()方法来获取到客户端的所有网络连接情况的对象,最后再使用该对象的getState()方法来判断客户端网络连接情况并且与NetworkInfo. state.CONNECTED对比判断是否相等就可以判断出客户端是否处于连接网络的状态.如果上面的判断结果是客户端未连接网络,则将同步数据存储在SQLite数据库中.SQLite数据库是通过继承SQLiteOpenHelper类来实现的.该数据库里面创建了两个表,分别为联系人表和通话记录表,分别用于存储联系人同步数据和通话记录同步数据.如果客户端判断为处于连接网络状态,则先将SQLite 数据库中存储的所有同步数据和客户端数据库刚更新的同步数据发送到服务器端.每当将SQLite数据库中的同步数据发送出去之后,就会调用SQLite数据库的delete()方法将旧的数据删除掉,方便之后的操作.要实现数据的实时同步首先得通过使用ContentObserver内容观察者监听通话记录数据库数据和联系人数据库的变化.假设手机有来电或则去电致使手机端的通话记录数据库数据发生变化或者手机端有对联系人数据库进行增加、删除或修改的操作致使联系人数据库发生变化,就会触发ContentObserver里面的onChange()方法,然后就可以在这个方法里面去获取新的数据并且通过out.println()把该条数据发送给服务器端.同时,有线电话端就可以通过重写Handler机制的handleMessage()方法来从服务器端获取到同步数据.有线电话端获取到同步数据之后,读取同步数据的标志位flag来判断该条数据是属于通话记录类型的还是联系人数据类型的.如果该条数据属于通话记录数据类型的,就需要将同步数据与本地通话记录数据库数据进行对比,如果该条同步数据是本地数据则不进行任何操作,如果同步数据非本地数据就需要通过Util.AddNumToCallLog()把同步数据插入到通话记录数据库中.如果这条数据是联系人数据类型的,也需要将该条同步数据与本地联系人数据库数据进行对比,如果该条数据属于本地数据库则不进行任何操作,否则通过 Util.AddContact()、Util.ChangeCotact()和Util.DeleteContact()分别对联系人数据库进行添加、修改和删除操作.通话记录数据库或则联系人数据库完成数据更新之后,就会触发加载器Loader的回调机制onLoadFinished()方法通知最终的运行结果,之后就会调用适配器的notifyDataSetChanged()方法,即当适配器的内容发生变化时通过这个方法强制调用getView来刷新每个item的内容,可以实现动态刷新列表从而动态更新UI界面.通过以上步骤有线电话端就可以实现实时同步手机端的数据了,反之同样可以实现手机端实时同步有线电话端的数据.客户端的Android程序是在Eclipse中建立的,在工程中建立了通话记录功能包、联系人功能包和内容观察者功能包等,这些功能包里面的Java代码分别实现了通讯录的联系人功能和显示通话记录功能等,其Android工程目录如图4所示.服务器端是采用ServerSocket创建的TCP服务端.服务器端程序流程图如图5所示.服务器端为了实现与客户端的连接,首先得使用ServerSocket()构造器创建一个服务器端的对象,然后在while(true)代码块里面使用server类的accept()方法不断地监听等待来自客户端的连接请求.由于,服务端得实现来自多个客户端的连接请求,所以,得使用Executors类下面的newCachedThreadPool()方法来存储多个客户端的连接请求并且得使用Java的多线程技术来分别处理来自不同客户端的连接请求.当服务器端监听到了来自客户端的连接请求之后,就会和客户端建立连接并且将该客户端添加到连接池中.与客户端建立连接之后,为了能够获取到客户端的同步数据,需要在服务器端使用Socket对象的getInputStream()方法来获取输入流对象,并且使用输入流对象的readLine()方法来读取来自客户端输出的同步数据.实现了服务器端的接收数据功能之后,就需要对所接收到的数据进行合法性判断.如果接收到的同步数据是不合法的就将该丢弃该同步数据并且不做任何操作,如果该同步数据合法就需要将该合法的同步数据发送给客户端.因此,服务器端为了能够将同步数据发送给客户端,服务器端需要使用 Socket对象的getOutputStream()方法获取输出流对象,然后使用输出流对象的println()将同步数据发送出去.实现上述功能之后,客户端就可以从服务器端读取到同步数据了.服务器端功能实现是在集成开发环境Eclipse中使用Java编程语言编写的,其工程目录如图6所示.测试系统能否正常工作分为以下几步[7,8]:① 将TQ210开发板和电话模块连接起来,组成系统测试所需要的搭载了Android 系统的有线电话,并打开开发板电源.② 打开Eclipse集成开发环境,首先启动服务器端的程序,使服务器处于工作状态.然后,在手机端和有线电话端安装通讯录的apk,并且使手机端和有线电话端的通讯录都处于工作状态.③ 测试联系人模块的实时同步功能,首先,进入手机端和有线电话端通讯录的联系人操作界面.然后,在手机端新增一个联系人保存该联系人之后,此时可以看到手机端和有线电话端同时新增了同一个联系人.如图7所示.④ 在手机端通讯录编辑刚才新添加的联系人,把该联系人的电话号码进行修改,保存之后可以观察到手机端的联系人和有线电话端的联系人的电话号码同时发生了改变.如图8所示.⑥ 手机和有线电话同时进入通讯录的通话记录界面,然后向手机拨打电话,通话结束后可以看到手机和有线电话的通话记录同时更新了同一条信息,可以通过观察通话记录上面的时间确定通话记录的实时同步.如图10所示.经过上面的测试结果可以知道,该通讯录实现了通话记录和增加、修改和删除联系人的实时同步功能.经过上面的测试,可以得出结论:该通讯录具有在通话记录和添加、删除、修改联系人的实时同步功能.事实上,可以把这个实时同步功能应用到办公人员的手机和办公电话上.当办公人员在外工作时,如果办公电话有未接来电时,办公人员可以即时知道这条来电信息并及时回复.也可以将该通讯录应用到具有多部手机的用户的手机上,只要每部手机都安装了该通讯录,就可以实现多部手机的通讯录数据的实时同步,这样可以免去用户在多部手机的同一个联系人进行相同的添加、删除和修改的操作.再则,随着4G和5G的发展,手机在室内的通话质量越来越差,在室内使用有线电话通话会比手机好,所以实现这个实时同步功能可以方便用户在有线电话上拨打手机端的联系人,免去查询电话号码的麻烦.因此,这个通讯录的实时同步功能具有很好应用前景.1薛莹,徐慨,黄麟舒.来电显示电路的设计.舰船电子工程, 2008,28(9):44–47.2马庆钟,姜弢.基于SyncML的CooTalk通讯录同步设计与实现[硕士学位论文].哈尔滨:哈尔滨工程大学,2013.3李辉,杨若瑜.基于安卓手机的信息云同步系统的设计与实现[硕士学位论文].南京:南京大学,2014.4熊积健,王琪.基于S5PV210平板电脑的设计.江西通信科技,2012,(1):12–15.5姚昱旻,刘卫国.Android的架构与应用开发研究.计算机系统应用,2008,17(11):110–112.6凡威,周渊平.基于Android平台的无线视频监控.计算机系统应用,2015,24(1):195–198.7杜江,周渊平.基于Android的电话拨号功能.计算机系统应用,2014,23(12):245–248.8陈成伟,周渊平.基于Android的有线电话CID功能.计算机系统应用,2016,25(1):85–89.。

使用sqliteopenhelper实现简易通讯录实训报告

使用sqliteopenhelper实现简易通讯录实训报告

实训报告:使用SQLiteOpenHelper实现简易通讯录一、实训目标通过本次实训,掌握SQLite数据库的基本操作,使用SQLiteOpenHelper类创建、打开、升级数据库,以及在Android应用程序中实现简易通讯录功能。

二、实训步骤1.创建SQLite数据库2.使用SQLiteOpenHelper类创建数据库。

首先,创建一个继承自SQLiteOpenHelper的类,并重写onCreate()和onUpgrade()方法。

在onCreate()方法中执行创建表的SQL语句,onUpgrade()方法用于升级数据库时执行更新表的SQL语句。

3.实现通讯录功能4.在通讯录界面上,显示联系人列表。

当用户点击某个联系人时,显示该联系人的详细信息。

实现添加、删除、修改和查询联系人操作。

5.实现数据绑定6.使用Data Binding库将数据绑定到界面上。

在布局文件中定义变量,通过布局文件与Java代码的双向绑定,将联系人数据显示在界面上。

7.实现增删改查操作8.通过SQLiteOpenHelper类提供的insert()、update()、delete()和query()方法实现增删改查操作。

将操作封装在DAO(Data Access Object)类中,方便进行数据操作。

9.测试应用程序10.运行应用程序,测试通讯录功能是否正常工作。

检查添加、删除、修改和查询联系人操作是否能够正确执行。

三、实训总结通过本次实训,我掌握了SQLite数据库的基本操作,了解了如何使用SQLiteOpenHelper 类创建、打开和升级数据库。

同时,我也学会了在Android应用程序中实现简易通讯录功能,包括数据绑定和增删改查操作。

通过实际操作,我对Android应用程序开发有了更深入的理解。

在未来的学习和工作中,我将继续深入学习Android开发技术,提高自己的技能水平。

基于android的手机通讯录(附程序)

基于android的手机通讯录(附程序)

20xx-20xx 学年x 学期xxxx大学电工电子实验教学中心创新性实验研究报告实验项目名称—基于android 的手机通讯录—组长姓名XXX ______ 学号XXXXXXXXXXXXXXX联系电话xxxxxxxxxxxx E-mail xxxxxxxxxxxx@成员姓名xxx _______ 学号xxxxxxxxxxxxx成员姓名XXX _____ 学号XXXXXXXXXXXXXXX专业电子信息工程班级20XX级x班指导教师及职称亠_____________________________20xx 年x 月x 日、实验摘要二、实验目的三、实验场地及仪器、设备和材料:场地:实验室设备及仪器:Java SDK, Eclipe软件,PC机一台四、实验内容2、实验内容开发流程见下图:i增加、删除、编联系人点击通信录界面中的增加按钮,入增加联系人面。

输入联系人的基本信息,并可根据用户需求增加个性化信息如头像、姓名、手机号码、办室电话、家庭电话、职务职称、单位名称、地址、邮政编码、Email、其他联系方式、备注这些信息,击确认返回主界面。

点击通信录中一个已存在的联系人,进入联系人编辑界面,可修改系人的资料或进行删除联系人操作,完成后退回到主界面。

对列表中联系人的标记,点mnu键弹出功能界面上的删除按键也可进行删除。

还可以在菜单上选择删除全部联系人清空通讯录。

在删除联系人的过程中,系统将提示用户是否继续操作,若放弃操作,则系人信息将继续保存。

2 、查找联系人用户点击menu键打开底部菜单框,底部菜单框为查询系人提供入口,进入通讯录的缺省页面为联系人列表,在列表中看到所有联系人的姓名、电话息排列,用户点击查找按键输入联系人基本信息,通讯录显所有符合查询条件的联系人列表,用户选择一个联系人进入联系人基本信息页面进行其他操作;查询完成,用户按返回键返回主界面。

3 、通功能用户在通录选择联系人进入联系详细信息界面,这时点击menu键打开通信功能框,选择打电话、发信息的功能进行操作。

安卓实验报告

安卓实验报告

安卓实验报告Android是目前全球最为流行的操作系统之一,其强大的应用程序生态系统和广泛的设备兼容性使得安卓成为开发者和用户的首选。

本文将介绍我在安卓实验中进行的一系列任务和实验结果。

实验一:安装开发环境在进行安卓开发之前,我们首先需要安装必要的开发环境。

我使用的是Android Studio,这是谷歌官方提供的开发工具,具有强大的功能和友好的用户界面。

通过安装Android Studio,我成功搭建了安卓开发环境,并进行了一些基本的配置。

实验二:创建第一个安卓应用程序根据老师的指导,我按照步骤成功创建了我的第一个安卓应用程序。

我选择了一个简单的计算器应用程序作为开始,它可以实现基本的加法和减法功能。

通过这个实验,我学会了使用Android Studio的界面设计工具和编写基本的Java代码。

实验三:UI设计和布局在这个实验中,我学习了安卓应用程序的用户界面设计和布局。

我使用了安卓提供的各种布局方式,如线性布局、相对布局和帧布局等,来设计和展示应用程序的不同界面。

通过这个实验,我对安卓界面设计的原则和技巧有了更深入的理解。

实验四:应用程序调试与测试在开发过程中,调试和测试是非常重要的环节。

通过Android Studio提供的调试工具,我能够针对应用程序中的问题进行定位和修复。

我还学会了使用模拟器和真机进行应用程序的测试,以确保应用程序的功能和稳定性。

实验五:数据库操作在这个实验中,我学习了如何在安卓应用程序中使用数据库。

我使用了SQLite数据库来存储和管理应用程序的数据。

通过编写SQL语句,我能够进行数据的插入、查询、更新和删除等操作。

这为我今后的应用程序开发提供了非常有用的技能。

总结:。

Android学习之SQLite数据库存储

Android学习之SQLite数据库存储

Android 学习之SQLite 数据库存储•引⾔概念 SQLite 数据库,和其他的SQL 数据库不同, 我们并不需要在⼿机上另外安装⼀个数据库软件,Android 系统已经集成了这个数据库;特点SQLite 是⼀个轻量级的关系型数据库,运算速度快,占⽤资源少,很适合在移动设备上使⽤不仅⽀持标准SQL 语法,还遵循ACID(数据库事务)原则,⽆需账号,使⽤起来⾮常⽅便SQLite ⽀持五种数据类型NULLinteger (整型)real(浮点型)text(⽂本类型)blob(⼆进制类型)SQLite 通过⽂件来保存数据库⼀个⽂件就是⼀个数据库数据库中⼜包含多个表格表格⾥⼜有多条记录每条记录由多个字段构成每个字段都有对应的值•创建数据库 Android 为了让我们能够更加⽅便地管理数据库,专门提供了⼀个 SQLiteOpenHelper 帮助类; 借助这个类就可以⾮常简单地对数据库进⾏创建和升级。

SQLiteOpenHelper 是⼀个抽象类,这意味着如果我们想要使⽤它的话,就需要创建⼀个⾃⼰的帮助类去继承它; SQLiteOpenHelper 中有两个抽象⽅法,分别是 和 ;: 数据库第⼀次被创建时被调⽤: 在数据库的版本发⽣变化时会被调⽤⼀般在软件升级时才需改变版本号,⽽数据库的版本是由程序员控制的假设数据库现在的版本是 1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新⽤户⼿机⾥的数据库表结构为了实现这⼀⽬的,可以把原来的数据库版本设置为 2,或者其他与旧版本号不同的数字即可 我们必须在⾃⼰的帮助类⾥⾯重写这两个⽅法,然后分别在这两个⽅法中去实现 创建、升级数据库 的逻辑。

SQLiteOpenHelper 中还有两个⾮常重要的实例⽅法: 和 。

这两个⽅法都可以 创建或打开 ⼀个现有的数据库(如果数据库已存在则直接打开,否则创建⼀个新的数据库), 并返回⼀个可对数据库进⾏读写操作的对象。

安卓实习报告

安卓实习报告

通信与电子信息专业实训报告项目名称:基于android的游戏开发班级 10通信1班姓名学号指导教师成绩实训时间:年月日—目录一、实训目的及其意义 (3)1.1、目的及意义 (3)1.2、研究现状 (3)二、实训主要任务、重点及难点 (4)2.1、任务 (4)2.2、重点内容及实现途径 (4)三、实训具体内容及完成的主要工作 (5)3.1、认识基础开发 (6)3.2、了解数据存储 (6)3.3、总体实训过程 (7)四、实际遇到的困难,解决问题的方法和措施 (8)(一)、所遇问题 (8)(二)、解决方法与措施 (9)五、心得体会 (9)一、实训目的及其意义1.1、目的及意义了解现阶段互联网发展主流,了解移动互联网,认识移动互联网的发展与展望,认识android,了解基于android的应用软件开发方法及其商业流程。

把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。

使学生在此期间能够初次体会到实际生产中的种种技能与经验,完成一项项目锻炼独立思考及团队合作能力。

使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况。

生产实习是学校教学的重要补充部分,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成部分和不可替代的重要环节。

它是与今后的职业生活最直接联系的,学生在生产实习过程中将完成学习到就业的过渡,因此生产实习是培养技能型人才,实现培养目标的主要途径。

它不仅是校内教学的延续,而且是校内教学的总结。

生产实习一方面巩固了书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使我们在实践中得到提高实训环节对于提高学生的综合能力和全面素质具有重要意义。

在Android应用中利用SQLite进行本地数据库操作

在Android应用中利用SQLite进行本地数据库操作

在Android应用中利用SQLite进行本地数据库操作随着移动应用的不断发展,电子设备成为人们生活中不可或缺的一部分。

而Android操作系统作为最广泛使用的移动操作系统之一,它提供了强大的开发平台,为开发者们提供了各种各样的开发工具和API。

其中,SQLite作为Android应用中的一种轻量级数据库管理系统,被广泛应用于数据存储和管理。

本文将介绍在Android应用中通过SQLite实现本地数据库操作的方法。

1. 简介SQLite是一种无服务器的自包含的数据库引擎,它在Android操作系统中作为默认的关系型数据库引擎。

它无需独立的服务器进程,将数据库引擎与应用程序合并在一起,使得应用程序可以直接操作数据库。

SQLite在移动设备上非常流行,因为它占用的磁盘空间相对较少,并且提供了性能高效的操作方式。

2. 创建数据库在Android应用中使用SQLite进行本地数据库操作,首先需要创建一个数据库。

Android提供了SQLiteOpenHelper类来管理数据库的创建和升级。

在创建数据库之前,首先需要定义数据库的结构,包括表的结构和字段信息。

接着,通过继承SQLiteOpenHelper类,重写onCreate()方法和onUpgrade()方法,可以自动创建数据库和升级数据库。

3. 创建表使用SQLite进行本地数据库操作时,需要在数据库中创建表来存储数据。

通过执行SQL语句,可以在数据库中创建表以及定义表中的字段信息。

SQLite支持多种数据类型,包括整型、浮点型、文本型等。

通过在SQL语句中指定字段的名称和类型,可以创建适合应用需求的表。

4. 插入数据插入数据是在数据库中进行本地数据库操作的常见操作之一。

通过执行SQL 语句的INSERT INTO语句,可以将数据插入到数据库的表中。

通过使用ContentValues类,可以方便地设置插入数据的字段值。

通过调用SQLiteDatabase 类的insert()方法,可以执行插入数据的操作。

android开发实验报告总结

android开发实验报告总结

android开发实验报告总结《android 开发实验报告总结》在当今科技飞速发展的时代,移动应用开发成为了热门领域之一,其中 Android 开发更是备受关注。

通过本次 Android 开发实验,我获得了丰富的实践经验和深刻的技术理解。

接下来,我将详细阐述这次实验的各个方面。

实验背景与目标随着智能手机的普及,Android 操作系统占据了相当大的市场份额。

本次实验的目标是通过实际开发一个简单的 Android 应用程序,深入了解 Android 开发的流程、技术架构以及相关工具的使用,从而提高自己的编程能力和解决问题的能力。

实验环境与工具在实验过程中,我们使用了 Android Studio 作为主要的开发工具。

Android Studio 提供了丰富的功能,包括代码编辑、调试、版本控制等,极大地提高了开发效率。

同时,还需要安装 Java 开发环境(JDK)以及 Android SDK 等必要的组件。

实验内容与步骤首先是项目创建。

在Android Studio 中,通过选择合适的项目模板,设定项目名称、包名等基本信息,创建了一个初始的 Android 项目框架。

接着是界面设计。

利用 XML 布局文件,定义了应用的界面元素,如按钮、文本框、列表等,并通过设置属性来调整它们的外观和位置。

同时,使用了 ConstraintLayout 等布局管理器,实现了灵活且美观的界面布局。

然后是功能实现。

通过编写 Java 代码,实现了应用的各种功能逻辑。

例如,点击按钮触发相应的事件处理,从网络获取数据并展示在界面上,以及与本地数据库进行交互等。

在数据存储方面,学习和使用了 SharedPreferences 来保存简单的配置信息,以及 SQLite 数据库来存储复杂的数据结构。

在网络通信方面,使用了 HttpURLConnection 或者 Volley 等库来发送 HTTP 请求,获取服务器端的数据。

调试与测试在开发过程中,不可避免会遇到各种问题。

Android实验一实验报告

Android实验一实验报告

Android实验一实验报告一、实验目的本次 Android 实验的主要目的是让我们熟悉 Android 开发环境的搭建,并通过创建一个简单的 Android 应用程序,初步了解 Android 应用的基本架构和开发流程。

二、实验环境1、操作系统:Windows 102、 Android Studio:版本 4123、 JDK:版本 18三、实验内容及步骤(一)Android 开发环境搭建1、下载并安装 JDK,配置好环境变量。

2、下载 Android Studio 安装包,按照安装向导进行安装。

3、启动 Android Studio,进行一些初始设置,如选择主题、安装必要的组件等。

(二)创建 Android 项目1、打开 Android Studio,选择“Start a new Android Studio project”。

2、填写项目名称(如“MyFirstAndroidApp”)、项目位置、包名等信息。

3、选择应用的最低支持 Android 版本和目标 Android 版本。

4、选择项目模板,这里我们选择“Empty Activity”。

(三)项目结构介绍1、打开项目后,我们可以看到项目的结构。

主要包括“app”目录、“gradle”目录等。

2、“app”目录下包含了应用的代码、资源文件等。

其中,“java”目录存放 Java 代码,“res”目录存放资源文件,如布局文件(layout)、字符串资源(values)、图片资源(drawable)等。

(四)编写代码1、打开“MainActivityjava”文件,这是应用的主活动类。

2、在“onCreate”方法中,我们可以进行一些初始化操作。

(五)设计布局1、打开“activity_mainxml”文件,这是应用的主布局文件。

2、使用 XML 标记语言来设计界面布局,如添加 TextView、Button 等控件。

(六)运行应用1、连接真机或使用模拟器。

android实训报告

android实训报告

android实训报告引言近年来,随着移动互联网的快速发展,基于Android操作系统的智能手机已经成为人们生活中不可或缺的一部分。

因此,学习并掌握Android开发技术,不仅可以提升个人的竞争力,同时也能为社会和企业的发展做出贡献。

本报告将就我所参与的Android实训项目进行总结和总结,并分享我在实训中所获得的经验和收获。

一、项目背景在开始介绍实训项目之前,我先要了解实训的背景和目的。

我们小组的项目是开发一个基于Android平台的在线购物应用。

通过该应用,用户可以浏览商品、下订单、进行支付等一系列购物操作,从而提升购物的便利性和体验。

二、项目规划在项目规划阶段,我们小组首先进行了需求分析和功能设计。

通过与实训指导教师和团队成员的讨论,我们确定了应用的主要功能模块,包括商品展示、购物车、订单管理、支付等。

然后,我们绘制了应用的原型图,并进行了用户界面的设计和交互逻辑的确定。

三、技术选型在技术选型的过程中,我们考虑了多个因素,包括Android版本的兼容性、开发难度和性能等。

最终,我们选择了使用Java语言和Android Studio集成开发环境进行开发。

Java是一门成熟且稳定的编程语言,而Android Studio是Google官方推荐的Android开发工具,具有强大的开发功能和调试功能。

四、项目开发在项目开发阶段,我们小组按照需求分析和功能设计文档开始了具体的编码工作。

我们采用了MVC(Model-View-Controller)的设计模式,以便于代码的维护和扩展。

其中,Model负责处理数据逻辑和与数据库的交互,View负责界面的展示和与用户的交互,Controller负责处理用户输入和控制业务逻辑的流程。

在开发过程中,我们遇到了一些技术难题和bug。

例如,在处理用户的购物车时,我们需要考虑并发操作和数据一致性的问题;在支付功能中,我们需要接入第三方支付接口,并确保支付的安全和可靠性。

关于android studio sqlite数据库实验总结

关于android studio sqlite数据库实验总结

关于android studio sqlite数据库实验总结作为一个Android Studio的SQLite数据库实验,以下是一些总结:1. 安装SQLite驱动程序:要在Android Studio中使用SQLite,需要安装SQLite驱动程序。

可以使用Android SDK中的工具包安装,具体步骤可以参考SQLite官方文档。

2. 创建SQLite数据库:在Android Studio中创建一个SQLite 数据库,可以在Project--> Database中创建。

在创建数据库时,需要提供一个数据库名称和密码,并设置数据库连接的用户名和密码。

3. 连接SQLite数据库:可以使用Android Studio提供的SQLite 连接工具,在Project--> Database中选择创建的SQLite数据库,然后选择连接工具。

连接时需要提供数据库名称和密码,以及连接服务器的地址和端口号。

4. 创建和保存数据库表:在Android Studio中创建和保存数据库表可以使用SQL语句。

可以使用SQLite的CREATE TABLE语句来创建表,也可以使用INSERT、SELECT等语句来创建、更新和删除表的数据。

5. 操作数据库表:在Android Studio中可以通过SQL语句和Android API来操作数据库表。

可以使用Android Studio提供的SQLite API来执行SELECT、INSERT、UPDATE、DELETE等SQL操作,也可以使用Java API来执行这些操作。

6. 保存和备份数据库:在完成数据库操作后,需要保存和备份数据库。

可以使用Android Studio提供的SQLite连接工具来保存数据库,也可以使用其他工具来备份数据库。

7. 调试数据库操作:在Android Studio中可以通过SQLite连接工具和Android API来调试数据库操作。

实验4——SQLite和SQLiteDatabase

实验4——SQLite和SQLiteDatabase

实验指导(四)——SQLite和SQLiteDatabase的使用
一、实验目的
1、本次实验的目的是让大家熟悉Android中对数据库进行操作的相关的接口、类等。

SQLiteDatabase这个是在android中数据库操作使用最频繁的一个类。

通过它可以实现数据库的创建或打开、创建表、插入数据、删除数据、查询数据、修改数据等操作。

2、实现添加用户名,爱好小例程。

二、实验要求
1、完成Android开发平台的搭建及相关配置
2、创建项目并熟悉文件目录结构
3、实现例程添加用户名,爱好实验步骤
三、实验步骤
项目界面:输入用户名,爱好添加到数据库,由数据库查询出来显示插入的列表。

当单击列表时会弹出Alert询问是否删除,进行删除操作。

1、创建项目
新建一个Android工程命名为Database,目录结构如下图:
2、布局文件
修改main.xml布局文件,添加display.xml文件,用来显示列表。

如下图Main.Xml
Display.xml
3、创建Activity
修改DatabaseActivity.java文件,新建DBHelper.java文件和displayAvtivity.java,代码如下图:
DBHelper.java 操作数据库的工具类,该类继承SQLiteOpenHelper。

DatabaseActivity.java 获取页面输入的值,添加到数据库
displayAvtivity.java 显示列表,删除数据。

手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)自查报告。

标题,手机通讯录实验报告及使用说明(附源代码)。

自查报告:在进行手机通讯录实验及使用说明的撰写过程中,我对手机通讯录的功能和操作进行了深入的研究和实践。

在实验中,我首先对手机通讯录的基本功能进行了分析和总结,包括添加联系人、编辑联系人信息、删除联系人等操作。

然后,我利用编程知识,编写了手机通讯录的源代码,并进行了测试和调试。

在实验中,我发现手机通讯录的功能十分实用,可以帮助用户轻松管理联系人信息,提高工作效率。

通过对手机通讯录的操作和源代码的编写,我对手机通讯录的原理和实现方式有了更深入的了解,也增强了我的编程能力和实际操作能力。

在使用说明的撰写过程中,我详细介绍了手机通讯录的各项功能操作和使用方法,并附上了源代码的下载链接,方便读者进行学习和实践。

我还对手机通讯录的使用注意事项进行了说明,帮助用户更好地使用手机通讯录,并避免操作失误。

总的来说,通过本次实验和使用说明的撰写,我对手机通讯录有了更深入的了解,也提高了我的编程能力和文档撰写能力。

我相信这份实验报告和使用说明能够帮助更多的人学习和使用手机通讯录,提高工作和生活效率。

附源代码:```java。

public class Contact {。

private String name;private String phoneNumber;private String email;public Contact(String name, String phoneNumber, String email) {。

= name;this.phoneNumber = phoneNumber;this.email = email;}。

public String getName() {。

return name;}。

public void setName(String name) {。

= name;}。

public String getPhoneNumber() {。

Android实训实习报告总结

Android实训实习报告总结

一、引言Android 学习已有一年半有余,先后做过两款游戏、三款应用和搭建一台服务端,也了解过一些Android相关的源码(JDK、SDK和NDK),学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。

巩固和学习了更多的Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。

android入门后,只会照着别人的葫芦来画瓢,即没有设计思想,也没有自主原创的代码,不好不好于是乎,进了公司跟着项目走,用项目来驱动自己去学习和提高公司是1+1开发模式,即1个美工 + 1个工程师,负责完成一个项目(主要是游戏开发),就完全需要自己设计游戏的布局、逻辑,以及各种动画,来增强用户体验的效果当时主要是看Android官方的SDK API文档、中文API文档、 JDK源码,对有些感念不清楚,就上论坛去找答案,如CSDN、ITEye、IBM、知乎,或者去啃google 官方的文档。

二、新掌握的Java基础学习2.1、Activity View、Surfaceview的理解掌握了常用控件、view、surfaceview使用方式,知道怎样去适配不同屏幕后,每天就是重复的工作,堆砌代码,难以进一步去提升自己于是就自己给自个找点事干,自定义控件,如对话框背景等,或去google code找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等学习中会不断遇到一个又一个新的问题,因此需要不断去查资料、再学习各种工具,逐步积累,潜移默化中自己掌握的知识和工具就多了,眼界也开阔了。

2.2、android-pulltorefresh一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WevView、ExpandableListView、GridView、ScrollView、Horizontal ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多。

基于Android平台的手机通讯录管理系统

基于Android平台的手机通讯录管理系统

第一章绪论1.1 工程研究背景经过多年的开展,随着第三代网络的使用及四代网络的即将来了呢,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。

因此,移动终端的应用软件和需要的效劳将会有很大的开展空间。

Google与包括HTC、摩托罗拉、三星、联想等在内的三十多家技术和无线应用的领军企业组成的开发联盟为此于2007年11月退出了一份专为移动设备设计的软件平台——Android OS。

Android 是一套真正意义上的移动性设备综合平台,它包括操作系统、中间件和一些关键的平台应用。

Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化额Java程序的运行过程。

Android 系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等效劳,同时也是硬件的连接层。

Abdroid平台的开放性等特点既能促进技术〔包括平台本身〕的创新,又有助于降低开发本钱,还可以是运营商能非常方便地制定特色化的产品,因此,它具有很大的市场开展潜力。

1.2 工程研究的目的及意义随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。

因此,移动终端的应用软件和需要的效劳将会有很大的开展空间。

在Google和Android 联盟的共同推动下,Android在众多操作系统中脱颖而出,受到广阔消费者的欢送。

通讯录作为的根本功能之一,每天我们都在频繁地使用着。

根据功能的不断加强与完善,通讯录对于人们的意义,已经不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向开展。

通讯录从无到有,从英文到中文,经过了十几年的开展历程,今后的开展趋势就是从通讯录开展为名片夹,也就是一个人名下,可以储存座机、、单位、地址、电子邮箱等内容,这种名片夹在薄的根底上,大大丰富了内容,同时结构也发生了革命性的的变化,而且随着的开展,相信更优秀的通讯录会越来越受到社会各层认识的喜爱。

(毕业设计)基于Android通讯录的设计与实现

(毕业设计)基于Android通讯录的设计与实现

毕业论文(设计)题目基于Android通讯录管理系统设计与实现学生姓名学号学院专业指导教师联系QQ 1912881988本人严重声明:1、持以“求实、创新”的科学精神从事研究工作。

2、本文是我个人在导师指导下进行的研究工作和取得的研究成果。

3、本文除引文外,所有实验、数据和有关材料均是真实的。

4、本文除引文和致谢内容外,没有抄袭其他人或其他机构发表或撰写过的研究成果。

作者签名:__________日期:__________目录1 绪论 (1)1.1 手机通讯录管理系统的开发背景 (1)1.2 手机通讯录管理系统的研究目的和意义 (1)1.3 系统主要实现内容及实现方式 (1)1.3.1系统主要实现功能 (1)1.3.2 Android系统的开发平台 (2)1.4 系统开发所需的技术支持 (2)1.4.1 Java开发语言 (2)1.4.2 Android简介 (3)2 手机通讯录管理系统分析 (3)2.1技术可行性分析 (3)2.2 经济可行性分析 (4)2.3 需求可行性 (4)3 系统概要设计 (4)3.1 总体功能设计 (4)3.2 系统流程设计 (5)3.2.1 业务流程图 (5)3.3 系统数据库简介与设计 (6)3.3.1 SQLite数据库简介 (6)3.3.2 系统数据库设计 (6)4 系统详细设计 (7)4.1 联系人模块 (7)4.1.1 联系人操作模块 (7)4.1.2 联系人查找模块 (9)4.2 信息模块 (10)4.2.1 信息显示模块 (10)4.2.2 信息编辑模块 (10)4.3 个人中心模块 (12)5 系统测试与调试 (13)5.1 测试的概念 (13)5.2测试的目的 (13)5.3 测试的原则 (13)5.4程序测试 (14)5.5 测试的主要内容 (14)5.6 测试用例 (14)5.7 系统测试结果 (15)5.7.1 编辑联系人功能测试 (15)5.7.2 查找联系人功能 (16)5.7.3 删除联系人测试 (16)5.7.4 短信息发送测试 (17)5.7.5 短信息删除测试 (17)5.7.6 备份功能测试 (17)5.8 测试总结 (18)6 总结 (18)参考文献: (19)致谢 (20)基于Android通讯录管理系统设计与实现摘要:随着科学技术的不断进步与发展,移动便携式设备,如手机,平板电脑等产品越来越普及,其中大部分产品的操作系统采用的Android操作系统,并且自Alphabet收购安卓系统后,安卓的市场份额急剧扩大并且还在进一步增加。

android数据存储实验总结

android数据存储实验总结

android数据存储实验总结一、实验介绍Android数据存储实验是在Android Studio开发环境下,利用SharedPreferences,SQLite和File三种API实现Android应用程序的数据存储,实现具有添加、查询、删除等功能的Android应用程序。

实验帮助了解Android中三种数据存储:SharedPreferences、SQLite 以及File三种存储方式的实际应用。

二、实验步骤1、创建Android工程使用Android Studio创建一个新的Android工程,并命名为MyDataStorage。

2、编写布局文件编写主页面的布局文件,通过ListView展示数据,添加EditText 用于输入数据,以及添加Button用于添加数据。

3、实现SharedPreferences存储创建一个SharedPreferences对象,调用edit()方法获得一个Editor对象,用来向SharedPreferences写入数据,通过getString()方法从SharedPreferences中读取数据。

4、实现SQLite数据库存储使用SQLiteOpenHelper类创建、管理数据库,调用SQLiteDatabase对象的execSQL()方法创建表格,调用SQLiteDatabase对象的insert()方法向表格插入数据;调用SQLiteDatabase对象的query()方法查询数据,调用SQLiteDatabase 对象的delete()方法删除数据。

5、实现文件存储创建一个文件对象,打开文件,使用PrintWriter写数据,使用BufferedReader读取数据。

三、实验结果通过本次实验,我学习了三种Android数据存储的方式:SharedPreferences、SQLite和File,并使用这三种方式实现了一个Android应用程序的数据存储。

安卓实训总结报告5篇

安卓实训总结报告5篇

安卓实训总结报告5篇篇1一、引言在科技飞速发展的今天,安卓技术作为移动开发领域的翘楚,受到了广泛关注。

为了更好地掌握安卓开发技能,我参加了为期三个月的安卓实训课程。

本次实训旨在提高学员的安卓开发能力,通过系统学习安卓应用开发的核心技术,培养具备实战能力的开发人才。

二、课程概述本次实训课程涵盖了安卓开发的基础知识与核心技术,包括Java 编程基础、安卓SDK应用、安卓UI设计、网络通信、数据存储等方面的内容。

通过理论讲解、案例分析、实践操作等多种教学方式,使学员能够全面了解安卓开发的各个方面。

此外,课程还设置了多个实践环节,让学员通过实际操作来巩固所学知识,提升开发能力。

三、重点收获1. 掌握了Java编程基础,为安卓开发奠定了坚实的基础。

2. 深入学习了安卓SDK的应用,能够熟练运用各种开发工具进行开发。

3. 学会了安卓UI设计,能够设计出美观大方的用户界面。

4. 了解了网络通信、数据存储等核心技术,能够开发出功能完善的安卓应用。

5. 通过实践操作,提高了自己的动手能力和解决问题的能力。

四、不足之处1. 对某些技术细节掌握不够深入,需要进一步加强学习和实践。

2. 在UI设计方面,还需要提高审美能力和设计水平。

3. 在开发过程中,需要进一步提高代码质量和开发效率。

五、建议与展望1. 建议学校加强实训课程的实践环节,增加更多的实战项目,让学员能够更好地将所学知识运用到实际开发中。

2. 希望学校能够提供更多的学习资源和技术支持,方便学员进行自主学习和交流。

3. 对于想要从事安卓开发的学员来说,需要注重基础知识的学习和实践能力的提升,同时还需要不断关注新技术的发展和应用,以适应市场的需求和变化。

六、总结与展望通过本次安卓实训课程的学习和实践,我收获了许多宝贵的经验和知识。

在未来的学习和工作中,我将继续努力提升自己的技能和能力,不断探索和尝试新的技术和方法,为成为一名优秀的安卓开发人才而努力。

同时,我也希望学校能够继续加强实训课程的建设和改革,为学员提供更好的学习体验和实践机会。

合肥师范android实验报告实验五

合肥师范android实验报告实验五
(2)知道了sqlite的基本使用方法(增删改查)。
指导教师评语和成绩评定:
实验报告成绩:
指导教师签字:
2017年9月 日
String name =username.getText().toString();
String pass =password.getText().toString();
Users user =newUsers();
user.setUsername(name);
user.setPassword(pass);
SQLiteDatabase db=myDBHelper.getWritableDatabase();
ContentValues values =newContentValues();
values.put("username", name);
values.put("password", pass);
setContentView(yout.register_main);
username= (EditText)findViewById(R.id.ed_name);
password= (EditText)findViewById(R.id.ed_pass);
register= (Button)findViewById(R.id.bt_register);
//TODOAuto-generated method stub
}
(3).创建个User的javabean存储数据
privateintid;
privateStringusername;
privateStringpassword;
写出getter和setter方法,构造函数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一次实验Android界面设计一. 实验目的及实验环境1. 实验目的1)掌握SQLiteOpenHelper类结构2)掌握基于SQLite数据库的应用开发过程3)掌握Content Provider发布数据的方法4)掌握Content Resolver获取数据的方法2.实验环境系统开发平Android Studio 3.0系统开发平台:Android 7.1运行平台:Windows10 x64运行环境: Framework SDK 2.0二. 实验教材、组织方式、实验容1.实验教材:Andorid开发与应用2.组织方式:个人独立完成2.实验容:实现基于SQLite数据库的通信录应用,通过单击增加图标打开添加通信录界面,通过单击通信录中的各条信息可删除选中项。

三.方案设计Android系统中集成了SQLite数据库,并且为数据库的操作提供了相关的类和方法,便于没有数据库开发经验的开发者编写程序。

另外,Android平台中利用Content Provider机制来实现跨应用程序数据共享。

一个应用程序可以通过Content Provider来发布自己的数据,其他的应用程序可以通过Content Resolver来获取共享数据。

四.运行结果五.总结通过这次实验掌握了SQLite OpenHelper类结构,掌握了基于SQLite数据库的应用开发过程以及Content Provider发布数据的方法和掌握Content Resolver 获取数据的方法。

六.附录:源代码主布局文件activity_main.xml:<LinearLayout xmlns:android="schemas.android./apk/res/android"<TextViewandroid:id="+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="通信录"/><ListViewandroid:id="+id/listView"android:layout_width="wrap_content"android:layout_height="wrap_content"></ListView> <Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="add"/></LinearLayout>添加联系人布局文件addrelation.xml:<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="schemas.android./apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_height="wrap_content"android:text=""/><EditTextandroid:id="+id/addName"android:layout_width="wrap_content"android:layout_height="wrap_content"/> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""/><EditTextandroid:id="+id/addTel"android:layout_width="wrap_content"android:layout_height="wrap_content"/> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="所属组"/><Spinnerandroid:id="+id/addGroup"android:layout_width="wrap_content"android:entries="array/test"></Spinner><Buttonandroid:id="+id/save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text=" 保存"/></LinearLayout>主Activity文件MainActivity.java:import android.support.v7.app.ActionBarActivity;import android.app.AlertDialog;import android.app.Application;import android.content.DialogInterface;import android.content.Intent;import android.database.Cursor;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleCursorAdapter;public class MainActivity extends ActionBarActivity {private ListView listView;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);listView = (ListView) findViewById(R.id.listView);// getRelationFromDB();}private void getRelationFromDB() {final DatabaseHelper dbHelper = new DatabaseHelper(this);Cursor cursor = dbHelper.query();String[] from = { "_id", "name", "tel", "groupName" };int[] to = { R.id._id, , R.id.tel, R.id.group };SimpleCursorAdapter scadapter = new SimpleCursorAdapter(this,yout.relationlist, cursor, from, to);listView.setAdapter(scadapter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> adapter, View view,int position, long id) {final long temp = id;AlertDialog.Builder adBuilder = new AlertDialog.Builder(MainActivity.this);adBuilder.setMessage("确认要删除记录吗?").setPositiveButton("确认",new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialog,int which) {// TODO Auto-generated method stubdbHelper.del((int) temp);Cursor cursor = dbHelper.query();String[] from = { "_id", "name", "tel","groupName" };int[] to = { R.id._id, ,R.id.tel, R.id.group };SimpleCursorAdapter scadapter = new SimpleCursorAdapter (getApplicationContext(),yout.relationlist, cursor,from, to);MainActivity.this.listView.setAdapter(scadapter);}}).setNegativeButton("取消",new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialog,int which) {}});AlertDialog aleraDialog = adBuilder.create();aleraDialog.show();}});dbHelper.close();}public void add(View view) {Intent intent = new Intent(MainActivity.this, AddrelationActivity.class);startActivityForResult(intent, 0x111);}protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);if (requestCode == 0x111 && resultCode == 0x111) {getRelationFromDB();}}Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}添加联系人AddrelationActivity.javaimport android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Spinner;public class AddrelationActivity extends Activity {private EditText addName, addTel;private Spinner addGroup;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.addrelation);addName = (EditText) findViewById(R.id.addName);addTel = (EditText) findViewById(R.id.addTel);addGroup = (Spinner) findViewById(R.id.addGroup);}public void save(View view) {final ContentValues values = new ContentValues();values.put("name", addName.getText().toString());values.put("tel", addTel.getText().toString());values.put("groupName", addGroup.getSelectedItem().toString());final DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());final AlertDialog.Builder adBuilder = new AlertDialog.Builder(this);adBuilder.setMessage("确认保存记录吗?").setPositiveButton("确认", new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdbHelper.insert(values);Intent intent = getIntent();setResult(0x111, intent);AddrelationActivity.this.finish();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});AlertDialog aleraDialog = adBuilder.create();aleraDialog.show();}}。

相关文档
最新文档