`
uz31415926
  • 浏览: 7575 次
社区版块
存档分类
最新评论

android中的content provider的使用

阅读更多

android有一个独特之处就是,数据库只能被它的创建者所使用,其他的应用是不能访问到的,所以如果你想实现不同应用之间的数据共享,就不得不用content provider了。
在Android中,content provider是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取以及操作数据。并且,android自身也提供了几个现成的content provider:Contacts, Browser, CallLog, Settings, MediaStore.

应用可以通过一个唯一的ContentResolver interface来使用具体的某个content provider。

ContentResolver cr = getContentResolver();
然后你就可以用ContentResolver提供的方法来使用你需要的content provider了。其中contentResolver提供的方法包括query(),insert(),update()等。要使用这些方法,还会涉及到一个东西,那就是Uri。你可以将它理解成一个string形式的contentProvider的完全路径,它的形式为<standard_prefix>://<authority>/<data_path>/<id>,
例如:
content://browser/bookmarks
content://contacts/people
content://contacts/people/3
下面结合一个实例来看我们如何使用一个已有的content provider,给例子展示了如何从已有的电话本中读出联系人信息:

01 package com.android.cp; 

02   

03 import android.app.Activity; 

04 import android.content.ContentResolver; 

05 import android.database.Cursor; 

06 import android.os.Bundle; 

07 import android.provider.Contacts.People; 

08 import android.util.Log; 

09 import android.widget.Toast; 

10   

11 public class ContentProviderTest extends Activity { 

12     private final String TAG = "ContentProviderTest";  

13     /** Called when the activity is first created. */

14     @Override

15     public void onCreate(Bundle savedInstanceState) { 

16         super.onCreate(savedInstanceState); 

17         Log.i(TAG,"enter onCreate"); 

18         setContentView(R.layout.main); 

19         createCP(); 

20     } 

21       

22     public void createCP() 

23     { 

24         ContentResolver cr = getContentResolver(); 

25           

26         //Cursor cur = managedQuery(People.CONTENT_URI, null, null, null, null); 

27   

28         Cursor cur = cr.query(People.CONTENT_URI, null, null, null, null); 

29           

30         getColumnData(cur); 

31   

32     } 

33       

34     private void getColumnData(Cursor cur){  

35         if (cur.moveToFirst()) { 

36   

37             String name;  

38             String phoneNumber;  

39             int nameColumn = cur.getColumnIndex(People.NAME);  

40             int phoneColumn = cur.getColumnIndex(People.NUMBER); 

41           

42             do { 

43                 // Get the field values 

44   

45                 name = cur.getString(nameColumn); 

46                 phoneNumber = cur.getString(phoneColumn); 

47                  

48                 Log.i(TAG, "name="+name); 

49                 DisplayToast(name+" "+phoneNumber); 

50   

51             } while (cur.moveToNext()); 

52   

53         } 

54     } 

55       

56     public void DisplayToast(String s) 

57     { 

58     Toast.makeText(this, 

59     s, 

60     Toast.LENGTH_LONG).show(); 

61     } 

62   

63 }

需要注意的是,你需要在你的Manifest文件中加上

view sourceprint?
1 <uses-permission 

2 android:name="android.permission.READ_CONTACTS"> 

3 </uses-permission>

否则,程序无法成功运行。
分享到:
评论

相关推荐

    android中Content Provider

    9. **ContentObserver**:当Content Provider中的数据发生改变时,可以使用`ContentObserver`来监听这些变化,并在发生变化时触发回调。 10. **安全实践**:确保只暴露必要的数据,并限制对敏感信息的访问。同时,...

    Android基础 Content Provider

    在Android开发中,Content Provider是一个至关重要的组件,它充当了应用程序间数据共享的桥梁。本文将深入探讨Content Provider的基本概念、创建方法、如何进行CRUD(Create、Read、Update、Delete)操作,以及如何...

    android content provider示例程序(简单记账)

    7. **使用Content Resolver**:在其他应用中,可以通过Content Resolver来与Content Provider交互,如`ContentResolver.query()`、`ContentResolver.insert()`等。 这个示例程序可以帮助开发者理解Content Provider...

    Android新手Content Provider获取通讯录,短信,通话记录

    理解Content Uri的概念和作用,掌握通过Content Provider访问联系人的方法,掌握通过Content Provider访问通话记录的方法,掌握通过Content Provider访问短信的方法。

    Android Content Provider Demo

    在Android开发中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地访问和操作数据。本"Android Content Provider Demo"着重于演示如何创建和使用Content Provider来实现跨...

    android 自定义 Content Provider示例

    通过运行这个测试用例,你可以了解如何在实际项目中使用自定义的Content Provider进行数据交互。 总的来说,自定义Content Provider是Android应用间数据共享的重要方式,它通过标准化的接口使得数据操作变得简单且...

    Android中使用Content Provider组件访问通讯录中的联系人和添加联系人案例详解

    在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地共享数据。本文将深入探讨如何使用Content Provider组件来访问和操作Android设备上的通讯录,特别是针对...

    Android组件content provider使用解析

    Android 组件 Content Provider 使用解析 Content Provider 是 Android 四大组件之一,主要作用是实现各个应用程序之间的数据共享。它提供了一种机制,允许不同的应用程序共享数据,实现跨应用程序之间的数据交互。...

    Content Provider的使用

    在Content Provider中,我们还需要定义一个或多个URI,每个URI对应一类数据操作。通常,我们使用`UriMatcher`工具类来匹配不同的URI,并根据匹配结果调用相应的方法。 接着,为了使其他应用能访问我们的Content ...

    android content provider

    【Android Content Provider】是Android系统中的一个重要组件,它主要用于在应用程序之间共享数据。Content Provider作为Android四大组件之一,为其他应用提供了访问私有数据的标准化接口。通过Content Provider,一...

    content_provider_demo

    - Uri是Content Provider中的关键标识,用于定位特定的数据。`UriMatcher`是一个工具类,帮助解析Uri并返回对应的操作代码,简化了Uri的处理。 3. **CursorLoader** - CursorLoader是AsyncTaskLoader的一个子类,...

    android provider

    在这个"android provider"主题中,我们将深入探讨Content Provider的工作原理、实现方式以及如何在实际应用中使用。 1. **Content Provider的基本概念** - Content Provider是一种标准化的数据接口,允许不同应用...

    查看android.provider包中的uri内容

    在Android开发中,`android.provider`包是系统提供的一个核心包,主要用于与系统的各种内容提供者(Content Provider)进行交互。这些内容提供者是Android系统数据共享的关键组件,它们允许应用访问并操作如联系人、...

    content provider实现数据共享demo(内有两个项目)

    在Android应用开发中,Content Provider是一种重要的组件,它允许应用程序之间进行数据共享。Content Provider作为Android系统中的数据接口,能够使一个应用的数据被其他应用访问和操作,这在多应用协同工作或者数据...

    Content Provider获取联系人和图片

    在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序之间可以安全地访问和操作数据。本篇文章将深入探讨如何利用Content Provider获取联系人和图片,以及相关的知识点。 ...

    Android Content Provider用法样例.rar

    Android Content Provider用法样例,解析如何使用“内容提供商”Content Provider共享不同应用的数据,本Android例子将使用Content Provider实现了获取联系人信息,里面的注释非常丰富,是学习android的好资料。

    2011.09.07(4)——— android 跨进程通信之content provider

    在Content Provider中,Uri是非常重要的,它代表了要访问的数据。通常,我们使用`&lt;authority&gt;`:`&lt;path&gt;`的形式来表示,其中`&lt;authority&gt;`是Content Provider的唯一标识,一般在AndroidManifest.xml中通过`&lt;provider&gt;...

    Content-Providers(1).rar_android_content provider

    关于Content Providers Content Providers 是所有应用程序之间数据存储和检索的一个桥梁,作用是使得各个...把18.SQLite和22.22.Content Provider添加到项目中,先运行18.SQLite,然后在进行22.Content Provider测试

    android中Content Proviter的使用方法总结

    Content Provider 是 Android 系统中一个核心的组件,它提供了数据共享和跨应用程序通信的机制。在 Android 中,由于安全性和隔离性的考虑,不同应用程序之间的数据通常无法直接访问。Content Provider 正是解决这一...

    编写content provider

    在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序之间可以安全地访问和操作数据。这篇博客“编写Content Provider”很可能是深入解析如何创建和使用自定义Content ...

Global site tag (gtag.js) - Google Analytics