实验报告封面课程名称:Android平台开发与应用课程代码:SM3004任课老师:梁郁君实验指导老师:梁郁君实验报告名称:实验10Android数据存储与IO学生姓名:学号:教学班:递交日期:签收人:我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行为。我已经保留了这份实验报告的副本。申明人(签名):实验报告评语与评分:评阅老师签名:一、实验名称:Android数据存储与IO二、实验日期:2014/11/13三、实验目的:1、掌握SharedPreferences的存储数据的格式及位置,能够读写其他应用程序的SharedPreferences。2、File存储数据3、掌握SQLite存储数据方法。4、会使用SQLiteOpenHelper辅助类,进行操作数据库。四、实验用的仪器和材料:PC+Eclipse+ADT五、实验的步骤和方法:1、读写其他应用程序SharedPreferences。读写其他应用程序的SharedPreferences,步骤如下:创建应用App1和应用App2,App2尝试读取App1的SharedPreferences内容在App2需要创建App1对应的Context。调用App1的Context的getSharedPreferences(Stringname,intmode)即可获取相应的SharedPreferences对象。如果需要向App1的SharedPreferences数据写入数据,调用SharedPreferences的edit()方法获取相应的Editor即可。根据上述说明和下面截图,以及代码注释,完成相关代码片段填空,并思考问题:SharedPreferences何时会丢失?图1App1运行的界面图2App2运行结果App1:记录应用程序的使用次数,/com.Test/UseCount.java程序如下,补充程序中所缺代码:importandroid.app.Activity;importandroid.content.SharedPreferences;importandroid.content.SharedPreferences.Editor;importandroid.os.Bundle;importandroid.widget.Toast;publicclassUseCountextendsActivity{SharedPreferencespreferences;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);preferences=getSharedPreferences(count,MODE_WORLD_READABLE);//读取SharedPreferences里的count数据intcount=(count,0);//显示程序以前使用的次数Toast.makeText(this,程序以前被使用了+count+次。,10000).show();Editoreditor=;//存入数据editor.putInt(count,++count);//提交修改editor.;}}App2:ReadOtherPreferences.java代码如下,补充程序所缺代码:importandroid.app.Activity;importandroid.content.Context;importandroid.content.SharedPreferences;importandroid.content.pm.PackageManager.NameNotFoundException;importandroid.os.Bundle;importandroid.widget.TextView;publicclassReadOtherPreferencesextendsActivity{ContextuseCount;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//ContextuseCount=null;try{//获取其他程序所对应的ContextuseCount=createPackageContext(,Context.CONTEXT_IGNORE_SECURITY);}catch(NameNotFoundExceptione){e.printStackTrace();}//使用其他程序的Context获取对应的SharedPreferencesSharedPreferencesprefs=(count,Context.MODE_WORLD_READABLE);//读取数据intcount=prefs.(count,0);TextViewshow=(TextView)findViewById(R.id.show);//显示读取的数据内容show.setText(UseCount应用程序以前被使用了+count+次。);}}2、使用SQL语句操作SQLite数据库,调试以下程序,分析代码的实现过程。使用SQLiteDatabase进行数据库操作的步骤如下:获取SQLiteDatabase对象,进行与数据库连接。调用SQLiteDatabase的方法来执行SQL语句。操作SQL语句的执行结果,比如用SimpleCursorAdapter封装成Cursor。调用close()方法,关闭SQLiteDatabase数据库,回收资源。根据应用截图和要求,完成相关代码填空,并回答问题。问题:应用中创建的SQLite数据文件保存在什么位置?卸载应用会不会删除该文件?图1读取历史数据图2插入新数据publicclassDBTestextendsActivity{SQLiteDatabasedb;Buttonbn=null;ListViewlistView;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//创建或打开数据库(此处需要使用绝对路径)db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+/my.db3,null);listView=(ListView)findViewById(R.id.show);bn=(Button)findViewById(R.id.ok);bn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewsource){//获取用户输入Stringtitle=((EditText)findViewById(R.id.title)).getText().toString();Stringcontent=((EditText)findViewById(R.id.content)).getText().toString();try{insertData(db,title,content);//查询news_info表的所有记录Cursorcursor=(select*fromnews_inf,null);inflateList(cursor);}catch(SQLiteExceptionse){//执行DDL创建数据表db.execSQL(createtablenews_inf(_idintegerprimarykeyautoincrement,+news_titlevarchar(50),+news_contentvarchar(255)));//执行insert语句插入数据insertData(db,title,content);//查询news_info表的所有记录Cursorcursor=(select*fromnews_inf,null);inflateList(cursor);}}});}privatevoidinsertData(SQLiteDatabasedb,Stringtitle,Stringcontent){//执行插入语句(insertintonews_infvalues(null,?,?),newString[]{title,content});}privatevoidinflateList(Cursorcursor){//填充SimpleCursorAdapter,注意控件的对应关系SimpleCursorAdapteradapter=newSimpleCursorAdapter(DBTest.this,R.layout.line,cursor,newString[]{news_title,news_content},);//显示数据listView.setAdapter(adapter);}@OverridepublicvoidonDestroy(){super.onDestroy();//退出程序时关闭SQLiteDatabaseif(db!=null&&db.isOpen()){db.close();}}}res/layout/line.xml?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=:orientation=horizontalandroid:layout_width=fill_parentandroid:layout_height=fill_parentTextViewandroid:id=@+id/my_titleandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:width=120px/TextViewandroid:id=@+id/my_contentandroid:layout_width=fill_parentandroid:layout_height=wrap_content//LinearLayout六、数据记录和计算:七、实验结果或结论:(总结实验过程遇到的问题、教训、心得等)八、备注或说明:九、引用参考文献: