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 Provider 提供了程序之间共享数据的方法,一个程序可以使用Content Provider 定义一个URI,提供统一的操作接口,其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。

二、使用现成的Content Provider

我们举一个读取Android系统通讯录提供的Content Provider为例,说明如何使用现成的Content Provider。

1、新建一个项目 Lesson20_ContentProvider项目。

2、res/layout/main.xml内容省略,就是制作一个查询按钮。

3、MainContentProvider.java的内容如下:

package android.basic.lesson20;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainContentProvider extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button b1 = (Button) findViewById(R.id.Button01);

        OnClickListener ocl = new OnClickListener() {

            @Override
            public void onClick(View v) {
                ContentResolver contentResolver = getContentResolver();
                // 获得所有的联系人
                Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                // 循环遍历
                if (cursor.moveToFirst()) {

                    int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);

                    int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

                    do {
                        // 获得联系人的ID号
                        String contactId = cursor.getString(idColumn);

                        // 获得联系人姓名
                        String disPlayName = cursor.getString(displayNameColumn);

                        Toast.makeText(MainContentProvider.this, "联系人姓名:"+disPlayName,
                                Toast.LENGTH_LONG).show();

                        // 查看该联系人有多少个电话号码。如果没有这返回值为0
                        int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

                        if (phoneCount > 0) {

                            // 获得联系人的电话号码列表
                            Cursor phonesCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                            + " = " + contactId, null, null);

                            if (phonesCursor.moveToFirst()) {
                                do {
                                    // 遍历所有的电话号码
                                    String phoneNumber = phonesCursor
                                            .getString(phonesCursor
                                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                    Toast.makeText(MainContentProvider.this, "联系人电话:"+phoneNumber,
                                            Toast.LENGTH_LONG).show();
                                } while (phonesCursor.moveToNext());
                            }
                        }

                    } while (cursor.moveToNext());
                }
            }
        };

        b1.setOnClickListener(ocl);
    }

}

在AndroidManifest.xml里添加:

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

4、实现效果图:

以上就是 Android Content Provider的简单实例,后续继续补充相关知识,谢谢大家的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 实例
, content
, provider
Provider详解
contentprovider示例、contentprovider详解、content provider详解、contentprovider、content provider,以便于您获取更多的相关知识。

时间: 2024-10-01 16:21:06

Android Content Provider详解及示例代码_Android的相关文章

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 ListView组件详解及示例代码_Android

Android 列表组件 ListView 列表组件是开发中经常用到组件,使用该组件在使用时需要为它提供适配器,由适配器提供来确定显示样式和显示数据. 下面看一个例子: 新建一个项目Lesson8_ListViewTest,Activity name是MainListViewTest . MainListViewTest.java的代码是: package android.basic.lesson8; import android.app.Activity; import android.os.

Android Dialog 对话框详解及示例代码_Android

Android Dialog 对话框 1.Dialog介绍 2.AlertDialog的基本使用 3.自定义对话框 Custom Dialog 一.Dialog介绍 Dialog也是Android中常用的用户界面元素,他同Menu一样也不是View的子类.让我们看一下它的继承关系: 这里要留意一下他的直接子类 AlertDialog,和间接子类 DatePickerDialog,ProgressDialog,TimePickerDialog,其中后三个我们在前面的章节已经讲过,今天我们把重点放在

Android 事件分发详解及示例代码_Android

事件分发是Android中非常重要的机制,是用户与界面交互的基础.这篇文章将通过示例打印出的Log,绘制出事件分发的流程图,让大家更容易的去理解Android的事件分发机制. 一.必要的基础知识 1.相关方法 Android中与事件分发相关的方法主要包括dispatchTouchEvent.onInterceptTouchEvent.onTouchEvent三个方法,而事件分发一般会经过三种容器,分别为Activity.ViewGroup.View.下表对这三种容器分别拥有的事件分发相关方法进行

Android Service详解及示例代码_Android

Android Service 详细介绍: 1.Service的概念 2.Service的生命周期 3.实例:控制音乐播放的Service 一.Service的概念 Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件. 二.Service的生命周期 Service对象不能自己启动,需要通过某个Activity.Service或者其他Context对象来启动.启动的方法有两种,Context.startS

Android SQLite详解及示例代码_Android

在Android中使用SQLite数据库的入门指南,打算分下面几部分与大家一起分享, 1.什么是SQLite 2.Android中使用SQLite 一.什么是SQLite SQLite是一款开源的.轻量级的.嵌入式的.关系型数据库.它在2000年由D. Richard Hipp发布,可以支援Java.Net.PHP.Ruby.Python.Perl.C等几乎所有的现代编程语言,支持Windows.Linux.Unix.Mac OS.Android.IOS等几乎所有的主流操作系统平台. SQLit

Android 进度条使用详解及示例代码_Android

在这里,总结一下loading进度条的使用简单总结一下. 一.说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总给人良好的用户体验. 先来找图看看,做这个图完成不用图片就可以做到了. 看下xml布局文件,其实就是直接用xml写的在加两个属性设置一下就好了,一个style,另一个是background. <ProgressBar android:id="@+id/pb_progressbar" style="

Android 文件选择器详解及实例代码_Android

     本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件.        此实例的实现过程很简单,这样可以让大家快速的熟悉Android文件选择器,提高开发效率.        网上曾经见到过一个关于文件选择器的实例,很多人都看过,本实例是根据它修改而成的,但更容易理解,效率也更高,另外,本实例有自己的特点:        1.监听了用户按下Back键的事件,使其返回上一层目录.       

Android GPS定位详解及实例代码_Android

      GPS定位是智能手机上一个比较有意思的功能,LBS等服务都有效的利用了GPS定位功能.本文就跟大家分享下Android开发中的GPS定位知识.        一.Android基础知识准备        1.Activity类        每一种移动开发环境都有自己的基类.如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是Activity.这个activity为我们提供了对移动操作系统的基本功能和事件的访问.这个类包含了基本的构造