Android开发经验谈首页投稿(暂停使用,暂停投稿)程序员

创建自己的内容提供器

2016-05-19  本文已影响215人  大话程序

实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器

创建一个类来继承ContentProvider,实现其方法

数据共享,只是将不涉及用户隐私的数据或可共享的数据提供外部访问接口,用于第三方应用程序来获取,第三方应用程序是通过uri参数来确定资源的,故我们应将我们共享出来的数据在内容提供器中存放

匹配内容Uri来确定访问的资源

通过返回的自定义代码来执行相应的数据库的CRUD操作

public class MyProvider extends ContentProvider{

  //自定义的代码,用于传入的内容Uri匹配内容提供器中的Uri格式做为返回数据
  public static final int TABLE_DIR = 0;
  
  public static final int TABLE_ITEM = 1;

  private static UriMatcher uriMatcher;

  static{
    //创建UriMatcher对象
    uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    //添加Uri格式
    uriMatcher.addURI("com.example.app.provider", "table", TABLE_DIR);
    uriMatcher.addURI("com.example.app.provider", "table/#", TABLE_ITEM);
  }

  @override
  public Curcor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder){
    switch(uriMatcher.match(uri)){  //根据传入的Uri来匹配内容提供器中的URI格式
      case TABLE_DIR:
        //查询table表中的所有数据
        break;
      case TABLE_DIR:
        //查询table表中的单条数据
        break;
      default:
        break;
    }
  }
..........
}

内容提供器是Android四大组件之一
需要在清单文件中注册,在application标签下创建provider标签:

<provider
  android:name="<path>"  
  android:authorities="<authority>"  
  android:exported="true" >
</provider>

保护隐私数据:
所有的 CRUD操作都一定要匹配到相应的内容URI格式才能进行,我们不可能向UriMatcher中添加隐私数据的URI,所以这部分数据根本无法被外部程序访问到

上一篇下一篇

猜你喜欢

热点阅读