android开发contentprovider教学(课堂PPT)_第1页
android开发contentprovider教学(课堂PPT)_第2页
android开发contentprovider教学(课堂PPT)_第3页
android开发contentprovider教学(课堂PPT)_第4页
android开发contentprovider教学(课堂PPT)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、1第一章第一章-跨应用数据源跨应用数据源ContentProviderAndroid 软件工程师系列课程软件工程师系列课程2本门课程目标本门课程目标学完本门课程后,你能够:学完本门课程后,你能够:u掌握ContentProvider实现数据共享u使用Service实现Android应用服务u实现Activity与Service的绑定和通讯u理解BroadcastReceiver实现广播通讯u使用Android的四大组件实现音乐播放器Android 软件工程师系列课程软件工程师系列课程3本章目标本章目标理解理解ContentProvider的作用。的作用。使用使用ContentProvider获

2、得系统信息(联系人)获得系统信息(联系人)自定义自定义ContentProvider的应用的应用Android 软件工程师系列课程软件工程师系列课程4ContentProvider简介简介Android系统中存在大量的应用,当不同的应用程序直接系统中存在大量的应用,当不同的应用程序直接需要共享数据时,可以使用需要共享数据时,可以使用ContentProvider来实现。来实现。ContentProvider是是Android应用的四大组件之一,与应用的四大组件之一,与Activity和和Serivce相同,使用前需要注册。相同,使用前需要注册。当一个程序需要把自己的数据暴露给其他程序使用时,该

3、当一个程序需要把自己的数据暴露给其他程序使用时,该程序就可以通过提供程序就可以通过提供ContentProvider来实现,其他应来实现,其他应用程序就可以通过用程序就可以通过ContenResolver来操作来操作Content Provider暴露的数据。暴露的数据。应用程序通过应用程序通过ContentProvider开放了自己的数据,该开放了自己的数据,该应用程序不需要启动,其他应用程序都可以操作开放的数应用程序不需要启动,其他应用程序都可以操作开放的数据,包括增删改查操作。据,包括增删改查操作。Android 软件工程师系列课程软件工程师系列课程5ContentProvider的使用

4、的使用ContentProvider的开发步骤:的开发步骤:u继承Android的ContentProvider基类实现自己的ContentProvider类。u在AndroidManifest.xml文件中注册该ContentProvider类,为ContentProvider指定Uri。Uri类似网页访问中使用的URL地址。Uri以content/:固定开头,包括注册时指定的路径及资源。为每个Uri指定访问时要返回的数据和其他操作。u其他应用程序使用ContenResolver通过ContentProvider的Uri访问开放的数据。Android 软件工程师系列课程软件工程师系列课程6C

5、ontentProvider的注册的注册在在AndroidManifest.xml中注册中注册ContentProvider。u在中配置 标签。uandroid:name属性:ContentProvider的类名uandroid:authorities属性:用于访问ContentProvider的名称。Android 软件工程师系列课程软件工程师系列课程7ContenResolver的使用的使用应用程序通过应用程序通过ContenProvider开放了数据后,其他应用开放了数据后,其他应用程序应通过程序应通过ContenResolver访问。访问。ContenResolver对象通过对象通过C

6、ontext提供的方法提供的方法getContenResolver()来获得。来获得。ContenResolver提供了以下方法来操作:提供了以下方法来操作:uinsertudeleteuupdateuqueryu这些方法分别会调用ContenProvider中与之对应的方法,并得到返回的结果。Android 软件工程师系列课程软件工程师系列课程8使用使用ContentProvider访问手机通讯录访问手机通讯录Android系统提供了系统提供了Contacts(通讯录)应用程序管理联(通讯录)应用程序管理联系人。系人。同时系统还为同时系统还为“联系人管理联系人管理”提供了提供了Content

7、Provider,其,其他应用程序就可以通过他应用程序就可以通过ContentProvider访问联系人信息,访问联系人信息,而不用关心联系人在数据库中存放的物理结构。而不用关心联系人在数据库中存放的物理结构。常用通讯录常用通讯录Uri:u管理联系人的管理联系人的Uri: ContactsContract.Contacts.CONTENT_URIu管理联系人电话的管理联系人电话的Uri: ContactsContract.CommonDataKinds.Phone.CONTENT_URIu管理联系人管理联系人Email的的Uri: ContactsContract.CommonDataKind

8、s.Email.CONTENT_URIAndroid 软件工程师系列课程软件工程师系列课程9手机通讯录存储数据库文件手机通讯录存储数据库文件Android 软件工程师系列课程软件工程师系列课程10添加通讯录添加通讯录ContentProvider访问权限访问权限使用系统资源需要在使用系统资源需要在AndroidManifest.xml文件中添文件中添加访问权限,否则应用程序将不能使用由系统提供的加访问权限,否则应用程序将不能使用由系统提供的ContentProvider。在在标签中添加:标签中添加:uuAndroid 软件工程师系列课程软件工程师系列课程11读取联系人姓名读取联系人姓名-1Co

9、ntentResolver.query(Uri uri, String projection, String selection, String selectionArgs, String sortOrder) 方法返回一个方法返回一个Cursor对象。对象。uuri: ContentProvider的uri 联系人的uri: ContactsContract.Contacts.CONTENT_URIuprojection:要查询的列名。uselection:查询的条件uselectionArgs:查询条件中通配符对应的值usortOrder:排序的列Android 软件工程师系列课程软件工程

10、师系列课程12读取联系人姓名读取联系人姓名-2Cursor usercursor = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null);SimpleCursorAdapter useradapter = new SimpleCursorAdapter( this, R.layout.userlistitem, usercursor, new StringContactsContract.Contacts._ID, ContactsContract.Contacts

11、.DISPLAY_NAME, new intR.id.txtid,R.id.txtname);ListView lstshowname = (ListView)findViewById(R.id.lstshowname);lstshowname.setAdapter(useradapter);使用query方法获得联系人的数据游标创建适配器绑定适配器用户ID的uri用户名称的uriAndroid 软件工程师系列课程软件工程师系列课程13自定义自定义ContentProvider编写一个编写一个ContentProvider的子类,该子类根据需要的子类,该子类根据需要可以实现增、删、改、查等方法

12、。可以实现增、删、改、查等方法。必须在必须在AndroidManifest.xml文件中注册自定义的文件中注册自定义的ContentProvider。创建需要开放数据的创建需要开放数据的URI,使用,使用UriMatcher映射。映射。为为URI关联数据,通常使用关联数据,通常使用sqlite数据库作为数据源。数据库作为数据源。Android 软件工程师系列课程软件工程师系列课程14制作开放数据的单词本应用制作开放数据的单词本应用需求:需求:u开发单词本应用,用户可添加自己学习过程中遇到的英语单词并作注释,单词保存在sqlite数据库中。u其他应用中可根据需要访问单词本应用保存在数据库中的数据

13、。u如:某娱乐软件的界面下端可随机出现一些记录的生词,帮助用户在不经意中加强对单词的记忆。Android 软件工程师系列课程软件工程师系列课程15制作开放数据的单词本应用制作开放数据的单词本应用步骤:步骤:u开发单词本应用,设计数据库。u添加ContentProvider子类,开放数据库数据。u注册自定义ContentProvider后,编写新的工程调用ContentProvider提供的数据Android 软件工程师系列课程软件工程师系列课程16单词本应用简单实现单词本应用简单实现Android 软件工程师系列课程软件工程师系列课程17添加添加ContentProviderpublic cl

14、ass WordStudyProvider extends ContentProvider public static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH); static matcher.addURI(com.demo.wordstudyprovider, wordstudy, 1); DBHelper helper; Override public boolean onCreate() helper = new DBHelper(this.getContext(), wordstudydb, null, 1); r

15、eturn true; Override public Cursor query(Uri uri, String columns, String selection, String selectionArgs, String sortOrder) SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor=null; if(matcher.match(uri)=1) cursor = db.rawQuery(select * from wordstudy,null); return cursor; .创建UriMatcher对

16、象并映射URI在onCreate方法中创建数据库对象判断URI,返回查询结果Cursor对象Android 软件工程师系列课程软件工程师系列课程18注册注册ContentProvider 注册ContentProvider的Uri使用标签注册Android 软件工程师系列课程软件工程师系列课程19新建应用,调用新建应用,调用contentProviderpublic class WordStudyProviderTestActivity extends Activity Override public void onCreate(Bundle savedInstanceState) super

17、.onCreate(savedInstanceState); setContentView(R.layout.main); Cursor cursor = getContentResolver().query(Uri.parse(content:/com.demo.wordstudyprovider/wordstudy), null, null, null, null); SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, R.layout.listitem, cursor, new String_id,word_e,word_c, new intR.id.txtid,R.id.txtworde,R.id.txtwordc); ListView lstshow = (ListView)findViewById(R.id.lstshow); lstshow.setAdapt

温馨提示

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

评论

0/150

提交评论