android教程 应用编程

上传人:jiups****uk12 文档编号:45547944 上传时间:2018-06-17 格式:PPT 页数:48 大小:148.09KB
返回 下载 相关 举报
android教程 应用编程_第1页
第1页 / 共48页
android教程 应用编程_第2页
第2页 / 共48页
android教程 应用编程_第3页
第3页 / 共48页
android教程 应用编程_第4页
第4页 / 共48页
android教程 应用编程_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《android教程 应用编程》由会员分享,可在线阅读,更多相关《android教程 应用编程(48页珍藏版)》请在金锄头文库上搜索。

1、Android 课程讲义吴明晖 浙江大学城市学院计算机系 5、数据存取智能手机开发数据存取nAndroid有四种方式:qSharePreferencen轻量级键-值方式存储,以XML文件方式保存。q文件n采用java.io.*库所提供有I/O接口,读写文件。qSQLit数据库nSQLite是轻量级嵌入式内置数据库。qContentProvidernContentProvider可为数据封装,为多个应用共享。1、SharedPreferencesn创建n以键值 方式加入数据n以 String Key 为索引来取出数据n清除SharedPreferences settings = this.get

2、SharedPreferences(“Demo“, MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit();editor.putString(“name“, “value”); mit();String str = settings.getString(“name“, “);editor.clear().commit();XML文件名SharedPreferencesn存入XML后的内容q目录:/data/data/包/shared_prefs/*.xmlXML文件名2、文件存取n文件用来存储大数量的数据n采用java.

3、io.*库所提供有I/O接口,读写文件。n只有本地文件可以被访问q优点:可以存储大容量的数据q缺点:文件更新或是格式改变可能会导致巨大的编 程工作文件操作(读)n读文件qContext.openFileInput(String name)打开一个与应 用程序联系的私有文件输入流q当文件不存在时抛出FileNotFoundException 异常FileInputStream in = this.openFileInput(“rt.txt“);/打开文件 “rt.txt“ in.close();/关闭输入流文件操作(写)n写文件qContext.openFileOutput(String nam

4、e,int mode)开启 一个与应用程序联系的私有文件输出流q当文件不存在时该文件将被创建q文件输出流可以在添加模式中打开,这意味新的数 据将被添加到文件的末尾FileOutputStream out = this.openFileOutput(“wt.txt“,MODE_APPEND); /打开文件“wt.txt“进行写操作、使用MODE_APPEND 在添加模式中打开文件 out.close();/关闭输出流读取静态文件n要打开打包在应用程序中的静态文件,使用 Resources.openRawResource(R.raw.mydatafil e)n该文件必须放在文件夹res/raw/中

5、InputStream in = this.getResources().openRawResource(R.raw.my); /获得Context资源 in.close();/关闭输入流把文件存放在SDCardn访问SDCard,需要申请访问SDCard的权限。 在AndroidManifest.xml中加入访问SDCard的权 限如下:SDCard读写n要进行SDCard读写,必须先判断手机是否装有 SDCard,并且可以进行读写。if(Environment.getExternalStorageState().equals(Environment.M EDIA_MOUNTED)File

6、sdCardDir = Environment.getExternalStorageDirectory();/获取SDCard目录File saveFile = new File(sdCardDir, “itcast.txt”); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write(“Android开发“.getBytes(); outStream.close(); 3、SQLite数据库编程n在某些情况下,文件不是有效的q如果多线程数据访问是相关的q如果应用程序处理可能变化的复杂数据结构q等

7、等n内置SQLite 数据库支持q数据库对于创建它们的包套件是私有的q数据库不应该用来存贮文件nSQLite 是一个轻量级的软件库q原子量性q坚固性q独立性q耐久性q体积大小只用几千字节q一些SQL 的指令只是部分支持,例如:ALTER、TABLESQLite数据库nAndroid提供了一个名为SQLiteDatabase的类 ,该类封装了一些操作数据库的API,使用该 类可以完成对数据进行添加(Create)、查询 (Retrieve)、更新(Update)和删除(Delete)操作 (这些操作简称为CRUD)。nSQLiteDatabase的execSQL()和rawQuery()方法 。

8、qexecSQL()方法:可以执行insert、delete、update 和CREATE TABLE之类有更改行为的SQL语句;qrawQuery()方法:可以执行select语句。nexecSQL()方法的使用例子:SQLiteDatabase db = .; db.execSQL(“insert into person(name, age) values(Android开发, 4)“); db.close();创建数据库nContext.createDatabase(String name,int version ,int mode,CursorFactory factory)创建 一个

9、新的数据库并返回SQLiteDatabase 对象q假如不能被创建,则抛出FileNotFoundExceptionSQLiteDatabase mydataBase=SQLiteDatabase.create(new CursorFactory()/创建一个数据库 /工厂类,当查询时调用来实例化一个光标 Override public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String editTable, SQLiteQuery query) / TODO Auto-generated met

10、hod stub return null; );创建数据库n创建新的数据库SQLiteDatabase myDataBase=this.openOrCreateDatabase(“myDataBase.db“, MODE_PRIVATE, new CursorFactory() /创建新的数据库,名称myDatabase,模式MODE_PRIVATE,光标工厂 /工厂类,一个可选工厂类,当查询时调用来实例化一个光标 Override public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String

11、 editTable, SQLiteQuery query) / TODO Auto-generated method stub return null; );4、使用ContentProvider共享数据n当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的 方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共 享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方 式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences 共享数据,需要使用sharedpreferences API读写数据。而使用 ContentProvi

12、der共享数据的好处是统一了数据访问方式。n第一步需要继承ContentProvider并重写下面方法:public class PersonContentProvider extends ContentProviderpublic boolean onCreate()public Uri insert(Uri uri, ContentValues values)public int delete(Uri uri, String selection, String selectionArgs)public int update(Uri uri, ContentValues values, St

13、ring selection, String selectionArgs)public Cursor query(Uri uri, String projection, String selection, String selectionArgs, String sortOrder)public String getType(Uri uri)使用ContentProvider共享数据n第二步需要在AndroidManifest.xml使用对 该ContentProvider进行配置,为了能让其他应用找到 该ContentProvider , ContentProvider 采用了 author

14、ities(主机名/域名)对它进行唯一标识,可以 把 ContentProvider看作是一个网站,authorities 就是 网站域名:IntentnAndroid中提供了Intent机制来协助应用间的交 互与通讯,或者采用更准确的说法是,Intent 不仅可用于应用程序之间,也可用于应用程序 内部的Activity/Service之间的交互。n与简单函数/方法调用,或者通过库调用接口 的方式不太一样。在Intent的使用中你看不到 直接的函数调用,相对函数调用来说,Intent 是更为抽象的概念,利用Intent所实现的软件 复用的粒度是Activity/Service,比函数复用更 高

15、一些,另外耦合也更为松散。广播sendBroadcast()nIntent之间传递数据n广播Intent通过调用发送信息qContext.sendBroadcast()qContext.sendOrderedBroadcast()qContext.sendStickyBroadcast()n通常一个广播Intent可以被订阅了此Intent的 多个广播接收者所接收。广播接收者BroadcastReceivern第一步:继承BroadcastReceiver,并重写 onReceive()方法。n第二步:订阅感兴趣的广播Intent:q方法一:使用代码q方法二:在AndroidManifest.

16、xml文件中的 节点里进行订阅。6、网络连接智能手机开发网络访问n使用网络,应该有相应使用允许。q文件AndroidManifest添加:以Get请求从Internet获取数据n建立HttpClient,选择post或get请求服务器而 获得网页数据。HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(url); HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); /尝试读取entity的长度,返回-1表示长度未知 long length = entity.getContentLength(); InputStream is = entity.getContent();从Inte

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号