应用解析Content Provider

Content Provider

Android中每一个应用程序都运行在各自的进程中,当一个应用需要返回其他应用的数据时,也就是需要数据在不同的虚拟机之间传递,所以Google引入了Content Provider(内容提供者)来解决不同应用包之间的数据共享

  • 在Android中content Provider是一个特殊的存储数据类型,它提供了一套标准的接口用来获取和操作数据, Android自身也是提供了contentprovider:contacts,Brower,CallLog,MediaStore。应用可以通过唯一的 Content Provider 界面来使用具体的某个 Content Provider,然后就可以调用 ContentResolver 提供的方法来使用你需要的 Content Provider了。
  • `package com.example.mybutton;

import android.content.ContentResolver;

import android.content.Context;

import android.database.Cursor;

import android.media.Image;

import android.provider.ContactsContract;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private TextView mTextView;

private String text=”“;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextView= (TextView) findViewById(R.id.text_view);
    ContentResolver cr=getContentResolver();
    Cursor cursor=cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);
    int nameIndex=0;
    String ContactName="";
    String contactId="";
    Cursor phone;
    String phoneNumber="";
    int phoneIndex;
    while(cursor.moveToNext())
    {
        //取得名称所在的索引
        nameIndex=cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
        //通过所在索引取得联系人的名称
        ContactName=cursor.getString(nameIndex);

        //取得电话号码所在索引

// numberIndex=cursor.getColumnIndex(ContactsContract.PhoneLookup.NUMBER);

// String number=cursor.getString(numberIndex);

        //获取联系人的ID号,在SQLite中的数据库ID
        contactId=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        phone=cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactId,
                null, null);

        while (phone.moveToNext()) {

            phoneIndex=phone.getColumnIndex(ContactsContract
                    .CommonDataKinds.Phone.NUMBER );
            phoneNumber=phone.getString(phoneIndex);
        }

       text +=(ContactName+":"+phoneNumber+"\n");

    }
    cursor.close();
    mTextView.setText(text);
}

}

`

时间: 2025-01-31 03:59:36

应用解析Content Provider的相关文章

android content provider 中的URL解析总是出问题?求指导!!!

java.lang.IllegalArgumentException: Unknown URL content:// 不管是自己写或者用别的的代码在我的eclipse中都是报这个错误 很怪,我的URL地址绝对没有写错,是不是和使用版本有关系?我的google提供的eclipse,sdk用的2.3.3 android content provider 中的URL解析总是出问题?求指导!!!

Android学习总结——Content Provider

原文地址:http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Content Provider内容提供者 : android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序.这些数据可以存储在文件系统中.在一个SQLite数据库.或以任何其他合理的方式, 其他应用可以通过ContentResolver类(见ContentProviderAccessApp例子)从该内容提供者中

Android四大基本组件(2)之Service 服务与Content Provider内容提供者

一.Service 服务: 一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序. 比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器.在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲.然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的.在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从

android学习十二(android的Content Provider(内容提供器)的使用)

文件存储和SharePreference存储以及数据存储一般为了安全,最好用于当前应用程序中访问和存储数据.内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性.目前使用内容提供器是android实现跨程序共享数据的标准方式.内容提供器可以选择只对一部分数据进行共享,从而保证我们的程序中的隐私数据不会有泄漏的风险. 内容提供器的用法一般有两种,一种是使用现有的内容提

android笔记 : Content provider内容提供器

内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能. 内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另一种是创建自己的内容提供器给我们程序的数据提供外部访问接口. 第一种方法:使用ContentResolver来读取和操作相应程序中的数据 1.用parse方法将内容 URI 字符串解析成 Uri 对象. uri(Uniform Resource identifier)指的是统一资源标识符Uri uri = Uri .

Android开发学习之路--Content Provider之初体验

天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下第三个android的组件,Content Provider内容提供器. Content Provider向我们提供了在不同应用程序之间的数据共享,比如微信啊,支付宝啊,想要获取手机联系人的信息,而手机联系人是另一个应用程序,那么这时候就需要用到Content Provider了.Content P

【转】Pro Android学习笔记(八):了解Content Provider(下中)

在之前提供了小例子BookProvider,我们回过头看看如何将通过该Content Provider进行数据的读取. (1)增加 private void addBook(String name ,String isbn,String author){    /* 从ContentProvider的insert()方法的参数可以看到,通过ContentValues来进行数据的传递.ContentValues是key/values对,可以存储多个组,非常适合传递信息 */    ContentV

Android应用程序组件Content Provider的共享数据更新通知机制分析

在Android系统中,应用程序组件Content Provider为不同的应用程序实现数据共享提供了基础设施,它主要通过Binder进程间通信机制和匿名共享内存机制来实现的.关于数据共享的另一个 话题便是数据更新通知机制了,即如果一个应用程序对共享数据做了修改,它应该如何通知其它正在使用这些共享数据的应用程序呢?本文将分析Content Provider的共享数据更新通知机制,为读者解答这个问题. Android应用程序组件Content Provider中的数据更新通知机制和Android系

API翻译 --- Content Provider Basics

IN THIS DOCUMENT Overview           综述 Accessing a provider           访问一个提供者 Content URIs                  内容URI Retrieving Data from the Provider                    检索的数据提供者 Requesting read access permission           请求读访问权限 Constructing the query