应用解析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);
}

}

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值