天天看点

android Content Provider

内容提供者即content provider,content provider提供了一个接口用来共享自己的数据,包括自己的私有数据。其他程序通过content resolve来使用这些数据。

当应用需要通过contentprovider对外共享数据时,第一步需要创建一个类继承contentprovider并重写下面方法:

public class personcontentprovider extends contentprovider{

      public boolean oncreate()

      public uri insert(uri uri, contentvalues values)

      public int delete(uri uri, string selection,string[] selectionargs)

      public int update(uri uri, contentvalues values, stringselection, string[] selectionargs)

     public cursor query(uri uri, string[] projection, stringselection, string[] selectionargs, string sortorder)

     public string gettype(uri uri)

}

第二步需要在androidmanifest.xml使用<provider>对该content provider进行配置,为了能让其他应用找到该content provider , content provider采用了authorities(主机名/域名)对它进行唯一标识,内容可以设置任意字符,为了使用方便,一般格式为:com.xxx.xxx.yyy(yy为自己设置的contentprovider名称),以后其他程序的content resolve就通过authorities去访问这个程序的数据,name的含义与配置activity时的含义一样,由于指定创建的继承contentprovider类的完整类名:

<manifest .... >

   <application android:icon="@drawable/icon"android:label="@string/app_name">

       <providerandroid:name=".personcontentprovider"android:authorities="cn.itcast.providers.personprovider"/>

   </application>

</manifest>

我们执行完第二步的在androidmanifest.xml中注册的操作后,开始书写第一步中我们创建的类(继承自contentprovider类)的具体代码了:

比如其他程序要通过contentprovider执行该程序数据库的查询(query)操作,我们则要在该程序中覆写接下来的query()方法,见下图:

接下来覆写query()方法:

之后就可以在其他应用程序中通过contentresolve来对该程序中数据库进行查询操作了:

这是查询操作,“增”、“删”、“改”的代码就可以仿照书写了。