国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Content Provider詳解及示例代碼

2019-12-12 05:44:28
字體:
來源:轉載
供稿:網友

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的簡單實例,后續繼續補充相關知識,謝謝大家的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴中市| 土默特左旗| 荥经县| 塔河县| 千阳县| 东乡族自治县| 汉寿县| 和林格尔县| 利津县| 西青区| 获嘉县| 莱西市| 望城县| 宁南县| 宁强县| 高雄市| 荣昌县| 睢宁县| 余姚市| 富裕县| 库车县| 贵定县| 靖安县| 长丰县| 鄂温| 平邑县| 桦南县| 琼结县| 林口县| 澄迈县| 会泽县| 定陶县| 万载县| 清流县| 中超| 建始县| 金华市| 沧州市| 天津市| 中西区| 岱山县|