`
feng_home
  • 浏览: 35601 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Android content provider基础与使用

阅读更多

上一篇文章中提到了如何操作andoird数据库,如果你只想在自己的这个应用程序里使用数据库,这样已经很好了,但是,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,给例子展示了如何从已有的电话本中读出联系人信息:

package com.android.cp;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.util.Log;
import android.widget.Toast;

public class ContentProviderTest extends Activity {
    private final String TAG = "ContentProviderTest"; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG,"enter onCreate");
        setContentView(R.layout.main);
        createCP();
    }
    
    public void createCP()
    {
        ContentResolver cr = getContentResolver();
        
        //Cursor cur = managedQuery(People.CONTENT_URI, null, null, null, null);

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

    }
    
    private void getColumnData(Cursor cur){ 
        if (cur.moveToFirst()) {

            String name; 
            String phoneNumber; 
            int nameColumn = cur.getColumnIndex(People.NAME); 
            int phoneColumn = cur.getColumnIndex(People.NUMBER);
        
            do {
                // Get the field values

                name = cur.getString(nameColumn);
                phoneNumber = cur.getString(phoneColumn);
               
                Log.i(TAG, "name="+name);
                DisplayToast(name+" "+phoneNumber);

            } while (cur.moveToNext());

        }
    }
    
    public void DisplayToast(String s)
    {
    Toast.makeText(this,
    s,
    Toast.LENGTH_LONG).show();
    }

}

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

<uses-permission 


android:name="android.permission.READ_CONTACTS">
</uses-permission>

 否则,程序无法成功运行。

 

 

分享到:
评论

相关推荐

    Android基础 Content Provider

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

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

    这篇博文的示例程序"android content provider示例程序(简单记账)"旨在帮助开发者理解如何实现一个基础的Content Provider,并将其应用到一个简单的记账软件中。 首先,我们需要了解Content Provider的基本结构。...

    Android Content Provider Demo

    本"Android Content Provider Demo"着重于演示如何创建和使用Content Provider来实现跨应用的数据共享。 Content Provider是Android系统提供的一种机制,允许应用程序暴露自己的数据给其他应用,或者获取其他应用...

    android中Content Provider

    这篇博客《Android中Content Provider》将深入探讨这个关键组件的工作原理和使用方法。 Content Provider的基本结构包括两个主要部分:`ContentResolver`和`Provider`。`ContentResolver`是客户端(调用方)与`...

    android content provider

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

    查看android.provider包中的uri内容

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

    Android Content Provider用法样例.rar

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

    android 自定义 Content Provider示例

    3. **数据库操作**:Content Provider通常与SQLite数据库配合使用,因此需要创建一个SQLiteOpenHelper子类,用于数据库的创建和升级。例如: ```java public class MyDatabaseHelper extends SQLiteOpenHelper { ...

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

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

    android provider

    6. **Content Provider与其他组件的交互** - Intent:Content Provider可以作为Intent的目标,例如启动一个Activity来编辑提供者中的数据。 - Broadcast Receiver:可以监听Content Provider的变更,例如数据插入...

    Content Provider的使用

    这篇博客“Content Provider的使用”深入探讨了如何在Android开发中利用Content Provider实现数据共享和访问。 Content Provider的核心在于提供一个标准的接口,使得任何应用程序都能够通过URI(Uniform Resource ...

    content_provider_demo

    在Android开发中,Content Provider是一种重要的组件,它允许应用程序之间共享数据。`content_provider_demo`是一个展示如何创建和使用Content Provider的示例项目。在这个项目中,开发者将学习如何为其他应用提供...

    Android组件content provider使用解析

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

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

    `ContentResolver`提供了一套与Content Provider接口一致的API,开发者可以直接使用它来执行CRUD操作,而无需直接实例化Content Provider。 例如,要查询数据,可以这样编写代码: ```java ContentResolver ...

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

    在Android系统中,Content ...掌握Content Provider的使用,不仅可以提升应用的可扩展性,还能提高与其他应用协同工作的效率。通过实际案例操作,如访问和添加联系人,能进一步加深对Content Provider的理解和应用。

    Android内容提供者(Content provider)

    ### 二、Content Provider注册与使用 1. **注册**:Content Provider需要在AndroidManifest.xml中进行注册,指定其对应的类名和URI。 ```xml &lt;provider android:name=".MyContentProvider" android:authorities=...

    Content Provider获取联系人和图片

    在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序之间可以安全地访问和操作数据。...理解并熟练掌握Content Provider的使用,对于提升Android开发能力至关重要。

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

    这些项目可能包含一个基础的Content Provider实现以及对应的Activity,用于展示如何通过Content Resolver与Content Provider交互。 总的来说,Content Provider是Android系统中实现跨进程数据共享的核心机制,...

    android content provider两个程序共享数据实例demo

    android content provider两个程序共享数据实例demo。简单的两个应用app之间共享数据。 getContentResolver().insert() getContentResolver().query() getContentResolver().delete() getContentResolver().update()

    使用Content Provider案例

    在Android系统中,Content Provider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地访问和操作数据。...同时,掌握Content Provider的使用也能加深对Android系统架构的理解,提高开发效率。

Global site tag (gtag.js) - Google Analytics