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>
否则,程序无法成功运行。
分享到:
相关推荐
9. **ContentObserver**:当Content Provider中的数据发生改变时,可以使用`ContentObserver`来监听这些变化,并在发生变化时触发回调。 10. **安全实践**:确保只暴露必要的数据,并限制对敏感信息的访问。同时,...
在Android开发中,Content Provider是一个至关重要的组件,它充当了应用程序间数据共享的桥梁。本文将深入探讨Content Provider的基本概念、创建方法、如何进行CRUD(Create、Read、Update、Delete)操作,以及如何...
7. **使用Content Resolver**:在其他应用中,可以通过Content Resolver来与Content Provider交互,如`ContentResolver.query()`、`ContentResolver.insert()`等。 这个示例程序可以帮助开发者理解Content Provider...
理解Content Uri的概念和作用,掌握通过Content Provider访问联系人的方法,掌握通过Content Provider访问通话记录的方法,掌握通过Content Provider访问短信的方法。
在Android开发中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地访问和操作数据。本"Android Content Provider Demo"着重于演示如何创建和使用Content Provider来实现跨...
通过运行这个测试用例,你可以了解如何在实际项目中使用自定义的Content Provider进行数据交互。 总的来说,自定义Content Provider是Android应用间数据共享的重要方式,它通过标准化的接口使得数据操作变得简单且...
在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地共享数据。本文将深入探讨如何使用Content Provider组件来访问和操作Android设备上的通讯录,特别是针对...
Android 组件 Content Provider 使用解析 Content Provider 是 Android 四大组件之一,主要作用是实现各个应用程序之间的数据共享。它提供了一种机制,允许不同的应用程序共享数据,实现跨应用程序之间的数据交互。...
在Content Provider中,我们还需要定义一个或多个URI,每个URI对应一类数据操作。通常,我们使用`UriMatcher`工具类来匹配不同的URI,并根据匹配结果调用相应的方法。 接着,为了使其他应用能访问我们的Content ...
【Android Content Provider】是Android系统中的一个重要组件,它主要用于在应用程序之间共享数据。Content Provider作为Android四大组件之一,为其他应用提供了访问私有数据的标准化接口。通过Content Provider,一...
- Uri是Content Provider中的关键标识,用于定位特定的数据。`UriMatcher`是一个工具类,帮助解析Uri并返回对应的操作代码,简化了Uri的处理。 3. **CursorLoader** - CursorLoader是AsyncTaskLoader的一个子类,...
在这个"android provider"主题中,我们将深入探讨Content Provider的工作原理、实现方式以及如何在实际应用中使用。 1. **Content Provider的基本概念** - Content Provider是一种标准化的数据接口,允许不同应用...
在Android开发中,`android.provider`包是系统提供的一个核心包,主要用于与系统的各种内容提供者(Content Provider)进行交互。这些内容提供者是Android系统数据共享的关键组件,它们允许应用访问并操作如联系人、...
在Android应用开发中,Content Provider是一种重要的组件,它允许应用程序之间进行数据共享。Content Provider作为Android系统中的数据接口,能够使一个应用的数据被其他应用访问和操作,这在多应用协同工作或者数据...
在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序之间可以安全地访问和操作数据。本篇文章将深入探讨如何利用Content Provider获取联系人和图片,以及相关的知识点。 ...
Android Content Provider用法样例,解析如何使用“内容提供商”Content Provider共享不同应用的数据,本Android例子将使用Content Provider实现了获取联系人信息,里面的注释非常丰富,是学习android的好资料。
在Content Provider中,Uri是非常重要的,它代表了要访问的数据。通常,我们使用`<authority>`:`<path>`的形式来表示,其中`<authority>`是Content Provider的唯一标识,一般在AndroidManifest.xml中通过`<provider>...
关于Content Providers Content Providers 是所有应用程序之间数据存储和检索的一个桥梁,作用是使得各个...把18.SQLite和22.22.Content Provider添加到项目中,先运行18.SQLite,然后在进行22.Content Provider测试
Content Provider 是 Android 系统中一个核心的组件,它提供了数据共享和跨应用程序通信的机制。在 Android 中,由于安全性和隔离性的考虑,不同应用程序之间的数据通常无法直接访问。Content Provider 正是解决这一...
在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序之间可以安全地访问和操作数据。这篇博客“编写Content Provider”很可能是深入解析如何创建和使用自定义Content ...