android开发contentprovider教学内部资料省公开课一等奖全国示范课微课金奖课_第1页
android开发contentprovider教学内部资料省公开课一等奖全国示范课微课金奖课_第2页
android开发contentprovider教学内部资料省公开课一等奖全国示范课微课金奖课_第3页
android开发contentprovider教学内部资料省公开课一等奖全国示范课微课金奖课_第4页
android开发contentprovider教学内部资料省公开课一等奖全国示范课微课金奖课_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章--跨应用数据源ContentProvider1/21本门课程目标学完本门课程后,你能够:掌握ContentProvider实现数据共享使用Service实现Android应用服务实现Activity与Service绑定和通讯了解BroadcastReceiver实现广播通讯使用Android四大组件实现音乐播放器2/21本章目标了解ContentProvider作用。使用ContentProvider取得系统信息(联络人)自定义ContentProvider应用3/21ContentProvider介绍Android系统中存在大量应用,当不一样应用程序直接需要共享数据时,能够使用ContentProvider来实现。ContentProvider是Android应用四大组件之一,与Activity和Serivce相同,使用前需要注册。当一个程序需要把自己数据暴露给其它程序使用时,该程序就能够经过提供ContentProvider来实现,其它应用程序就能够经过ContenResolver来操作ContentProvider暴露数据。应用程序经过ContentProvider开放了自己数据,该应用程序不需要开启,其它应用程序都能够操作开放数据,包含增删改查操作。4/21ContentProvider使用ContentProvider开发步骤:继承AndroidContentProvider基类实现自己ContentProvider类。在AndroidManifest.xml文件中注册该ContentProvider类,为ContentProvider指定Uri。Uri类似网页访问中使用URL地址。Uri以content//:固定开头,包含注册时指定路径及资源。为每个Uri指定访问时要返回数据和其它操作。其它应用程序使用ContenResolver经过ContentProviderUri访问开放数据。5/21ContentProvider注册在AndroidManifest.xml中注册ContentProvider。在<application></application>中配置<provider/>标签。android:name属性:ContentProvider类名android:authorities属性:用于访问ContentProvider名称。6/21ContenResolver使用应用程序经过ContenProvider开放了数据后,其它应用程序应经过ContenResolver访问。ContenResolver对象经过Context提供方法getContenResolver()来取得。ContenResolver提供了以下方法来操作:insertdeleteupdatequery这些方法分别会调用ContenProvider中与之对应方法,并得到返回结果。7/21使用ContentProvider访问手机通讯录Android系统提供了Contacts(通讯录)应用程序管理联络人。同时系统还为“联络人管理”提供了ContentProvider,其它应用程序就能够经过ContentProvider访问联络人信息,而不用关心联络人在数据库中存放物理结构。惯用通讯录Uri:管理联络人Uri:ContactsContract.Contacts.CONTENT_URI管理联络人电话Uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI管理联络人EmailUri:ContactsContract.CommonDataKinds.Email.CONTENT_URI8/21手机通讯录存放数据库文件9/21添加通讯录ContentProvider访问权限使用系统资源需要在AndroidManifest.xml文件中添加访问权限,不然应用程序将不能使用由系统提供ContentProvider。在<manifest></manifest>标签中添加:<uses-permissionandroid:name="android.permission.READ_CONTACTS"/><uses-permissionandroid:name="android.permission.WRITE_CONTACTS"/>10/21读取联络人姓名-1ContentResolver.query(Uriuri,Stringprojection,Stringselection,String[]selectionArgs,StringsortOrder)方法返回一个Cursor对象。uri:ContentProvideruri联络人uri:

ContactsContract.Contacts.CONTENT_URIprojection:要查询列名。selection:查询条件selectionArgs:查询条件中通配符对应值sortOrder:排序列11/21读取联络人姓名-2Cursorusercursor=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);SimpleCursorAdapteruseradapter=newSimpleCursorAdapter(this,R.layout.userlistitem,usercursor,newString[]{ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME},newint[]{R.id.txtid,R.id.txtname});ListViewlstshowname=(ListView)findViewById(R.id.lstshowname);lstshowname.setAdapter(useradapter);使用query方法取得联络人数据游标创建适配器绑定适配器用户IDuri用户名称uri12/21自定义ContentProvider编写一个ContentProvider子类,该子类依据需要能够实现增、删、改、查等方法。必须在AndroidManifest.xml文件中注册自定义ContentProvider。创建需要开放数据URI,使用UriMatcher映射。为URI关联数据,通常使用sqlite数据库作为数据源。13/21制作开放数据单词本应用需求:开发单词本应用,用户可添加自己学习过程中碰到英语单词并作注释,单词保留在sqlite数据库中。其它应用中可依据需要访问单词本应用保留在数据库中数据。如:某娱乐软件界面下端可随机出现一些统计生词,帮助用户在不经意中加强对单词记忆。14/21制作开放数据单词本应用步骤:开发单词本应用,设计数据库。添加ContentProvider子类,开放数据库数据。注册自定义ContentProvider后,编写新工程调用ContentProvider提供数据15/21单词本应用简单实现16/21添加ContentProviderpublicclassWordStudyProviderextendsContentProvider{publicstaticUriMatchermatcher=newUriMatcher(UriMatcher.NO_MATCH);static{matcher.addURI("com.demo.wordstudyprovider","wordstudy",1);}DBHelperhelper;@OverridepublicbooleanonCreate(){helper=newDBHelper(this.getContext(),"wordstudydb",null,1);returntrue;}@OverridepublicCursorquery(Uriuri,String[]columns,Stringselection,String[]selectionArgs,StringsortOrder){SQLiteDatabasedb=helper.getReadableDatabase();Cursorcursor=null;if(matcher.match(uri)==1){cursor=db.rawQuery("select*fromwordstudy",null);}returncursor;}………..}创建UriMatcher对象并映射URI在onCreate方法中创建数据库对象判断URI,返回查询结果Cursor对象17/21注册ContentProvider<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"><activity>……</activity><providerandroid:name="WordStudyProvider"android:authorities="com.demo.wordstudyprovider"></provider></application>注册ContentProviderUri使用<provider>标签注册18/21新建应用,调用contentProviderpublicclassWordStudyProviderTestActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);

Cursorcursor=getContentResolver().query(Uri.parse("content://com.demo.wordstudyprovider/wordstudy")

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论