首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 12446|回復(fù): 0
上一主題 下一主題
[教程]

第二十講:Content Provider 使用入門

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
774
本講內(nèi)容:Content Provider的使用。   
1、Content Provider 簡介   
2、使用現(xiàn)成的Content Provider   
3、定義自己的Content Provider
我們說Android應(yīng)用程序的四個核心組件是:Activity、Service、Broadcast Receiver 和 Content Provider。在Android中,應(yīng)用程序彼此之間相互獨立的,它們都運行在自己獨立的虛擬機中。Content Provider 提供了程序之間共享數(shù)據(jù)的方法,一個程序可以使用Content Provider 定義一個URI,提供統(tǒng)一的操作接口,其他程序可以通過此URI訪問指定的數(shù)據(jù),進行數(shù)據(jù)的增、刪、改、查。
我們舉一個讀取Android系統(tǒng)通訊錄提供的Content Provider為例,說明如何使用現(xiàn)成的Content Provider。
1、新建一個項目 Lesson20_ContentProvider項目。
2、res/layout/main.xml內(nèi)容省略,就是制作一個查詢按鈕。
3、MainContentProvider.java的內(nèi)容如下:   
  1. 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();   
                                    // 獲得所有的聯(lián)系人   
                                    Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);   
                                    // 循環(huán)遍歷   
                                    if (cursor.moveToFirst()) {   
       
                                            int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);   
       
                                            int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);   
       
                                            do {   
                                                    // 獲得聯(lián)系人的ID號   
                                                    String contactId = cursor.getString(idColumn);   
       
                                                    // 獲得聯(lián)系人姓名   
                                                    String disPlayName = cursor.getString(displayNameColumn);   
       
                                                    Toast.makeText(MainContentProvider.this, "聯(lián)系人姓名:"+disPlayName,   
                                                                    Toast.LENGTH_LONG).show();   
       
                                                    // 查看該聯(lián)系人有多少個電話號碼。如果沒有這返回值為0   
                                                    int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));   
       
                                                    if (phoneCount > 0) {   
       
                                                            // 獲得聯(lián)系人的電話號碼列表   
                                                            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, "聯(lián)系人電話:"+phoneNumber,   
                                                                                            Toast.LENGTH_LONG).show();   
                                                                    } while (phonesCursor.moveToNext());   
                                                            }   
                                                    }   
       
                                            } while (cursor.moveToNext());   
                                    }   
                            }   
                    };   
       
                    b1.setOnClickListener(ocl);   
            }   
       
    }
復(fù)制代碼
4、運行程序,查看結(jié)果     
系統(tǒng)通訊錄中的聯(lián)系人信息     
我們的程序讀取出來的聯(lián)系人信息(待續(xù))

上一篇:android listview拖動和gridview拖動
下一篇:第十六講:菜單 Android Menu
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-12-22 16:28 , Processed in 0.058110 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表