ContentProvider实现数据共享1

1.起因:   不用的应用程序之间可能需要共享数据, 而当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用可通过ContentProvider来实现。

2.配置ContentProvider:   android:name="  .  类名 ";  

                                            android:authorities="org.crazyit.providers.dictprovider "            //aurhorities 可称为contendProvided  的域名,可称为ConentProvider的一个命名标志。

                                           android:exported="true" ;

3.URI    三部分 1, content://  (其是一个默认协议)  相当于网站的  http://   。

           2、 authorities  (其实就是ContentProvider的authorities)。

          3.words   //资源部分,当访问者需要访问不同的资源时,这个部分是可以动态改变的。

          URI uri = URI.parse(“ string  name ”);

4.使用ContentResorver操作数据

   (1)获取ContentResorver对象 :  

               ContentResolver resorver =getContentResourver();

  (2)使用ContentResourver对象提供的方法操作数据

             简而言之:ContentResourver是通过对指定URI执行CRUD等数据操作,这些CRUD操作会委托该URI执行对应的ConentProvider来实现,实现间接调用。

 5.创建ContentProvider 说明

            为了确定ContentProvider实际能处理URI ,以及确定每个方法中的URI参数所操作的数据,android系统提供UriMatcher类, UriMatcher类提供了如下两个方法:

  获取UriMatcher对象        1.UriMacher matcher=new  UriMatcher(UriMatcher.No_MATCH) 

                                             2.void addURI (String authority ,String path ,int code)   // 该方法用于向UriMathcer注册URI ,其中authority 和 path 组合成一个URI

                                             3.int Match(Uri uri)   //匹配Uri ,返回 code 

        android也提供了ContentUris工具类,它是操作URI 字符串的工具类,提供了两个工具方法

           URI  withAppendedld(uri, id),用于为路径加上ID部分

    如   URI uri=URI.parse(String name)  ,Uri resultUri=ContentUris.withAppendedID(uri,2) ;

            ID   parseId(uri)  ,从指定uri中解析出所包含的ID值。



你可能感兴趣的:(疯狂android基础)