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来对该程序中数据库进行查询操作了:

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

时间: 2024-09-10 23:16:05

android Content Provider的相关文章

Android Content Provider详解及示例代码_Android

Android:Content Provider的使用. 1.Content Provider 简介 2.使用现成的Content Provider 3.定义自己的Content Provider 一.Content Provider 简介 我们说Android应用程序的四个核心组件是:Activity.Service.Broadcast Receiver 和 Content Provider.在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中.Content Pro

Android Content Provider详解及示例代码

Android:Content Provider的使用. 1.Content Provider 简介 2.使用现成的Content Provider 3.定义自己的Content Provider 一.Content Provider 简介 我们说Android应用程序的四个核心组件是:Activity.Service.Broadcast Receiver 和 Content Provider.在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中.Content Pro

浅谈Android Content Provider的使用_Android

Content Provider:一个组件,必须放在应用的主包或应用的子包之下: 组件的配置需要在清单文件中进行配置:content provider需要在application节点中进行配置:内容提供者在应用中的作用是对外共享数据(任意类型的数据)使用的,别的程序可以对数据进行CRUD,如通讯录:如果采用文件的方式对外共享数据,会因为文件的类型不同而需要使用不同的api访问方式导致访问繁杂,而内容提供者提供了统一的api对数据进行操作:<provider android:name=".P

6、Android Content Provider测试

如果你的应用中使用了Content Provider来与其他应用进行数据交互,你需要对Content Provider进行测试来确保正常工作. 创建Content Provider整合测试 在Android中,app将Content Provider视为数据API.一个Content Provider可能会有public 常量. Content Provider允许你访问真实的用户数据,所以必须在一个隔离的测试环境中来测试你的Content Provider.这就意味着你的测试不会更改真实的用户

Android测试教程(7):测试Content Provider

Content Provider 为不同的应用访问数据提供了统一的接口,本篇介绍Android测试包中用于测试Content Provider 的相关 知识. Android 测试包中用于测试Content Provider的基本类为ProviderTestCase2, 允许你在一个隔离环境下来测试 Content Provider. 并提供了一些Mock类如IsolatedContext ,MockContentResover 来辅助测试. 和其它测试一样,对 于Content Provide

android的Content Provider组件怎么考虑安全问题

问题描述 android的Content Provider组件怎么考虑安全问题 Content Provider组件怎么做到安全,有没有一些好的方法, 解决方案 Android 组件Content Providerandroid组件之Content Provider 解决方案二: http://stackoverflow.com/questions/6120025/how-to-restrict-content-provider-data-across-applications

Android开发四大组件Activity/Service/Broadcast Receiver/Content Provider详解

Android开发的四大组件一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重要组件 intent的详解. 一.Activity详解 Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()-->onStart()-->onResume() 当另一个Activity启动时:第一个Activity onPause()-->第二个Activity  

browser-如何使用浏览器的 content provider?

问题描述 如何使用浏览器的 content provider? 我创建了下面简单的代码从浏览器中获得书签: public class BroswerProviderActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Cursor cursor = get

contentprovider-使用sms content provider 锁定 sms

问题描述 使用sms content provider 锁定 sms 我在运行一个 sms 应用程序,通过使用 sms content provider 获取所有的字段. Uri uriSms = Uri.parse(""content://sms/inbox"");Cursor c = context.getContentResolver().query(uriSms nullnullnullnull); _idthread_idaddresspersondate