Android Contactsの使用(一)
7851 ワード
Android連絡先データベースの使用を学習します.基本的なSQLiteの知識が求められる.詳細については、Android SQLite and Cursor Articleに関する記事を参照してください.Android 1.x 2.0バージョンでグーグルはAndroidの連絡先データベースを変更しました.このマニュアルは主に3つの部分に分かれています.1つは2.0で名刺入れにアクセスすることを紹介することです.二つ目は1.6以前のバージョンを紹介することです.3つ目は、各バージョンに抽象クラスと累積を与えて、名刺記録データを管理することです.
Android Contact API For 2.0
Granting Access権限付与
AndroidManifest.xmlファイルで次の権限を付与
Querying The Android Contact Database連絡先データベースクエリー
基本的な個人情報は名刺入れ表に格納され、詳細は個人表に格納されます.それで...0で該当連絡記録を照会するURIはContactsContractである.Contacts.CONTENT_URI.
アプリケーションを起動するときは、他のAndroidアプリケーションを閉じる必要があります.まず、ContentResolverのインスタンスcrを作成します.ContentResolverのインスタンスを使用してデータベースを問合せ、連絡先リストカーソルを返します.このクエリはContactsContract.Contacts.CONTENT_URIは、格納されたURIを行う.次に、カーソルにレコードが含まれているかどうかを確認し、レコードが含まれている場合は、サイドレコードIDフィールドの値をID変数に格納します.彼はパラメータとして後ろの場所で使用します.名前フィールドの値もname変数に格納します.カーソルの詳細な使い方については、Androidのカーソルチュートリアルを参照してください.
Phone Numbers電話番号
電話番号は独自のテーブルに格納され、個別にクエリーする必要があります.照会する電話番号表はSDKの変数ContactsContractを使用する.CommonDataKinds.Phone.CONTENT_URIが格納するURI.WHERE条件を使用して指定された連絡先の電話番号を取得します.
Android連絡先SQLiteデータベースで2番目のクエリーを実行します.問い合わせの電話番号はContactsContract.CommonDataKinds.Phone.CONTENT_URIが格納するURI.CONTACT_IDは電話帳に記憶する、ContactsContract.CommonDataKinds.Phone.CONTACT_IDとwhere句は、返されるデータを制限するために使用されます.
Email Addresses電子メールアドレス
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "= ?", new String[]{id}, null);
while (emailCur.moveToNext()) {
//emailアドレスが1つの配列に保存されている場合、複数のメールアドレスString email=が得られます.
Postal Addresses郵便住所
Instant Messenger(IM)インスタントメッセージ
Organizations組織
Android Contact API For 2.0
Granting Access権限付与
AndroidManifest.xmlファイルで次の権限を付与
Querying The Android Contact Database連絡先データベースクエリー
基本的な個人情報は名刺入れ表に格納され、詳細は個人表に格納されます.それで...0で該当連絡記録を照会するURIはContactsContractである.Contacts.CONTENT_URI.
package com.test;import android.app.Activity;
import android.database.Cursor;import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
public class TestContacts extends Activity {
@Override public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);//
if(cursor.getCount()>0){
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));// id
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));//
if(cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))>0) { //Query phone here. Covered next
}
}
}
}
}
アプリケーションを起動するときは、他のAndroidアプリケーションを閉じる必要があります.まず、ContentResolverのインスタンスcrを作成します.ContentResolverのインスタンスを使用してデータベースを問合せ、連絡先リストカーソルを返します.このクエリはContactsContract.Contacts.CONTENT_URIは、格納されたURIを行う.次に、カーソルにレコードが含まれているかどうかを確認し、レコードが含まれている場合は、サイドレコードIDフィールドの値をID変数に格納します.彼はパラメータとして後ろの場所で使用します.名前フィールドの値もname変数に格納します.カーソルの詳細な使い方については、Androidのカーソルチュートリアルを参照してください.
Phone Numbers電話番号
電話番号は独自のテーブルに格納され、個別にクエリーする必要があります.照会する電話番号表はSDKの変数ContactsContractを使用する.CommonDataKinds.Phone.CONTENT_URIが格納するURI.WHERE条件を使用して指定された連絡先の電話番号を取得します.
// ID
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
while (pCur.moveToNext()) {
// Do something with phones
}
pCur.close();
Android連絡先SQLiteデータベースで2番目のクエリーを実行します.問い合わせの電話番号はContactsContract.CommonDataKinds.Phone.CONTENT_URIが格納するURI.CONTACT_IDは電話帳に記憶する、ContactsContract.CommonDataKinds.Phone.CONTACT_IDとwhere句は、返されるデータを制限するために使用されます.
Email Addresses電子メールアドレス
Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "= ?", new String[]{id}, null);
while (emailCur.moveToNext()) {
//emailアドレスが1つの配列に保存されている場合、複数のメールアドレスString email=が得られます.
emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); } emailCur.close();
Notes
String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] noteWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
if (noteCur.moveToFirst()) {
String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE)); } noteCur.close();
Postal Addresses郵便住所
String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] addrWhereParams = new String[]{id,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,null, addrWhere, addrWhereParams, null);
while(addrCur.moveToNext()) {
String poBox = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); String region = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); String type = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); } addrCur.close();
Instant Messenger(IM)インスタントメッセージ
String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] imWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,null, imWhere, imWhereParams, null);
if (imCur.moveToFirst()) {
String imName = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); String imType = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE)); } imCur.close();
Organizations組織
String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] orgWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE}; Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,null, orgWhere, orgWhereParams, null);
if (orgCur.moveToFirst()) {
String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA)); String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE)); } orgCur.close();