内容提供者ContentProvider

  1. 首先在需要提供内容提供者的应用中添加内容提供者的代码
  2. package com.example.sqllite;
  3. import com.example.sqllite.servise.DBOpenHelp;
  4. import android.content.ContentProvider;
  5. import android.content.ContentUris;
  6. import android.content.ContentValues;
  7. import android.content.UriMatcher;
  8. import android.database.Cursor;
  9. import android.database.sqlite.SQLiteDatabase;
  10. import android.net.Uri;
  11. public class personProvider extends ContentProvider {
  12. private DBOpenHelp dbOpenHelp;
  13. //Uri匹配器,检验是否匹配
  14. private static final UriMatcher MATCHER=new UriMatcher(UriMatcher.NO_MATCH);
  15. private static final int SUCCESS=1;
  16. static {
  17. MATCHER.addURI("com.contentProvide.providers.personProvides", "person", SUCCESS);
  18. }
  19. @Override
  20. public boolean onCreate() {
  21. dbOpenHelp=new DBOpenHelp(this.getContext());
  22. return true;
  23. }
  24. @Override
  25. public int delete(Uri uri, String selection, String[] selectionArgs) {
  26. // TODO Auto-generated method stub
  27. return 0;
  28. }
  29. @Override
  30. public String getType(Uri uri) {
  31. // TODO Auto-generated method stub
  32. return null;
  33. }
  34. @Override
  35. public Uri insert(Uri uri, ContentValues values) {
  36. SQLiteDatabase db=dbOpenHelp.getWritableDatabase();
  37. switch (MATCHER.match(uri)) {
  38. case SUCCESS:
  39. long rowID=db.insert("person", "name", values);
  40. //Uri insertUri=Uri.parse("content://com.contentProvide.providers.personProvides/person/"+rowID);
  41. Uri insertUri=ContentUris.withAppendedId(uri, rowID);
  42. db.close();
  43. return insertUri;
  44. default:
  45. throw new IllegalArgumentException("未知的Uir");
  46. }
  47. }
  48. @Override
  49. public Cursor query(Uri uri, String[] projection, String selection,
  50. String[] selectionArgs, String sortOrder) {
  51. // TODO Auto-generated method stub
  52. return null;
  53. }
  54. @Override
  55. public int update(Uri uri, ContentValues values, String selection,
  56. String[] selectionArgs) {
  57. // TODO Auto-generated method stub
  58. return 0;
  59. }
  60. }


2.在原应用中添加配置项

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.sqllite"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="18" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="com.example.sqllite.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<!--  添加内容提供者的配置 -->

<provider android:name=".personProvider" android:authorities="com.contentProvide.providers.personProvides"/>

</application>

</manifest>



3.新应用中进行访问

Uri uri=Uri.parse("content://com.contentProvide.providers.personProvides/person");

//访问contentProvider的帮助类

ContentResolver resolver=this.getApplicationContext().getContentResolver();

ContentValues values=new ContentValues();

values.put("name", "hahha");

values.put("age", 33);

values.put("amount", "123");

resolver.insert(uri, values);



内容提供者ContentProvider

时间: 2024-10-27 10:03:20

内容提供者ContentProvider的相关文章

Android中内容提供者ContentProvider实现数据库增删改查

1.我们首先new一个我们自己的类集成ContentProvider,并实现方法如下 package com.wzw.sqllitedemo.providers; import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper; import android.content.ContentProvider; import android.content.ContentUris; import android.content.ContentValues;

[Android Pro] 监听内容提供者ContentProvider的数据变化

转载自:http://blog.csdn.net/woshixuye/article/details/8281385 一.提出需求 有A,B,C三个应用,B中的数据需要被共享,所以B中定义了内容提供者ContentProvider:A应用修改了B应用的数据,插入了一条数据.有这样一个需求,此时C应用需要得到数据被修改的通知并处理相应操作. 二.示例代码 A应用 /** * 对内容提供者进行操作 * * @author XY * */ public class MainActivity exten

[Android Pro] 内容提供者ContentProvider的基本使用

一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.ContentProvider为存储和获取数据提供了统一的接口.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的

Android四大组件之内容提供者--ContentProvider

Android四大组件之内容提供者--ContentProvider 1,什么是ContentProvider ContentProvider将应用中的数据对其它应用进行共享, 提供增删改查的方法 ContentProvider统一了数据的访问方式,不必针对不同数据类型采取不同的访问策略 ContentProvider将数据封装,只暴露出我们希望提供给其它程序的数据 ContentProvider中可以注册观察者, 监听数据的变化 2,怎么创建 2.1定义类继承ContentProvider,

【Android基础】内容提供者ContentProvider的使用详解

1.什么是ContentProvider 首先,ContentProvider(内容提供者)是android中的四大组件之一,但是在一般的开发中,可能使用的比较少. ContentProvider为不同的软件之间数据共享,提供统一的接口.也就是说,如果我们想让其他的应用使用我们自己程序内的数据,就可以使用ContentProvider定义一个对外开放的接口,从而使得其他的应用可以使用咱们应用的文件.数据库内存储的信息.当然,自己开发的应用需要给其他应用共享信息的需求可能比较少见,但是在Andro

Android开发之内容提供者ContentProvider

2 内容提供者ContentProvider 一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的好处是统一了数据

Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容

一.什么是ContentProvider? ContentProvider直译过来就是内容提供者,主要作用就是A应用提供接口给B应用调用数据,和之前介绍的sharedPreference和直接开放文件访问类似,都是共享应用程序数据,不同的是之前的两种文件格式可能完全不同,如可能为xml,txt,sql等等,这里ContentProvider返回的数据格式是统一的,因此应用的更为广泛一点. 二.实例 这里使用的是A应用通过ContentProvider共享数据给B应用.这里A应用用的是前文中的an

Android之内容提供者ContentProvider的总结

本文包含以下知识点: ContentProvider Uri 的介绍 ContentResolver: 监听ContentProvider的数据改变 一:ContentProvider部分 ContentProvider的作用: Content providers store and retrieve data and make it accessible to all applications. They're the only way to share data across applica

内容提供者ContentProvider和内容解析者ContentResolver

简介 ContentProvider 在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider 对你应用中的数据进行添删改查.关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为Context.MODE_WORLD_READABLE 或Context.MODE_WORLD_WRITEABLE同样也可以对外共享数据.那么,这里为何要使用ContentProvider 对