Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android技術基礎 >> 第67章、使用ContentProvider操作聯系人(從零開始學Android)

第67章、使用ContentProvider操作聯系人(從零開始學Android)

編輯:Android技術基礎

你知道嗎?我們天天在手機上使用的聯系人,其本質在Android中也是保存在一個SQLite數據庫中。

它的路徑為:/data/data/com.android.providers.contacts/databases/contacts2.db

android也提供了很多接口,通過ContentResolver().query方法,傳入不同的URI即可訪問相應的數據集。在聯系人數據庫裡面聯系人和電話號碼是分別存在兩個表裡面的,因為存在一個聯系人擁有幾個號碼的情況,所以android為聯系人和手機號碼分別單獨創建了相應的視圖。聯系人信息的視圖裡面只保存與聯系人相關的資料,例如姓名,是否有手機號碼等。而手機號碼資料則是每一個電話號碼為一條記錄,如果有一個聯系人有3個號碼,則裡面會出現3個該聯系人的記錄,號碼分別為他的三個號碼。

如果是需要讀取聯系人信息,傳入的URI為:ContactsContract.Contacts.CONTENT_URI

如果是需要讀取手機號碼信息傳入的URI為:ContactsContract.CommonDataKinds.Phone.CONTENT_URI

 

一、設計界面

1、布局文件

打開res/layout/activity_main.xml文件。
輸入以下代碼:

[html] view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <TextView  
  9.         android:id="@+id/textView1"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:text="聯系人列表" />  
  13.   
  14.     <ListView  
  15.         android:id="@+id/contactlist"  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="wrap_content" >  
  18.     </ListView>  
  19.   
  20.     <Button  
  21.         android:id="@+id/read"  
  22.         android:layout_width="wrap_content"  
  23.         android:layout_height="wrap_content"  
  24.         android:text="讀取聯系人信息" />  
  25.   
  26. </LinearLayout>  


2、自定義ListView文件

打開res/layout/contacts.xml文件。
輸入以下代碼:

[html] view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/_id"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.       
  12.     <TextView  
  13.         android:id="@+id/name"  
  14.         android:layout_width="wrap_content"  
  15.         android:layout_height="wrap_content" />  
  16.       
  17.   
  18. </LinearLayout>  


二、程序文件

打開“src/com.genwoxue.contentprovider_a/MainActivity.java”文件。
然後輸入以下代碼:

[java] view plain copy  
  1. package com.genwoxue.contentprovider_a;  
  2.   
  3.   
  4. import android.os.Bundle;  
  5. import android.provider.ContactsContract;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.ListView;  
  10. import android.widget.SimpleCursorAdapter;  
  11. import android.app.Activity;  
  12. import android.database.Cursor;  
  13.   
  14. public class MainActivity extends Activity {  
  15.   
  16.     private ListView lvContacts=null;  
  17.     private Cursor cursor=null;  
  18.     private Button btnRead=null;  
  19.       
  20.       
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.         lvContacts=(ListView)super.findViewById(R.id.contactlist);  
  26.           
  27.           
  28.         btnRead=(Button)super.findViewById(R.id.read);  
  29.           
  30.         btnRead.setOnClickListener(new OnClickListener(){  
  31.             public void onClick(View v)  
  32.             {    
  33.                 cursor=MainActivity.this.getContentResolver()  
  34.                         .query(ContactsContract.Contacts.CONTENT_URI,  
  35.                                 null,  
  36.                                 null,  
  37.                                 null,  
  38.                                 null);  
  39.                 String[] from={ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME};  
  40.                 int to[]={R.id._id,R.id.name};  
  41.                   
  42.                 SimpleCursorAdapter adapter = new SimpleCursorAdapter(  
  43.                         MainActivity.this,  
  44.                         R.layout.contacts,  
  45.                         cursor,  
  46.                         from,  
  47.                         to);  
  48.                 lvContacts.setAdapter(adapter);  
  49.             }  
  50.         });  
  51.     }  
  52.   
  53.   
  54. }  


三、配置文件

打開“AndroidManifest.xml”文件。

然後輸入以下代碼:

[html] view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.genwoxue.contentprovider_a"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="15" />  
  10.     <span style="color:#ff0000;"><strong><uses-permission android:name="android.permission.READ_CONTACTS"/>  
  11.   
  12. </strong></span>    <application  
  13.         android:allowBackup="true"  
  14.         android:icon="@drawable/ic_launcher"  
  15.         android:label="@string/app_name"  
  16.         android:theme="@style/AppTheme" >  
  17.         <activity  
  18.             android:name="com.genwoxue.contentprovider_a.MainActivity"  
  19.             android:label="@string/app_name" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.                 <category android:name="android.intent.category.LAUNCHER" />  
  23.             </intent-filter>  
  24.         </activity>  
  25.     </application>  

注意:由於要進行讀寫外部存儲卡操作,故而需要在AndroidManifest.xml文件中添加兩項權限:

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved