Working With Android Contacts分析和总结分析和总结.docx
IntroductionToAndroidContacts
LearntoworkwiththeAndroidcontactsdatabase.BasicknowledgeofaccessingSQLiteinAndroidalongwithusingCursorsisexpected.SeeAtnhderoidSQLiteandCursorArticlfeormoreinformation.
Googlechangedthecontactsdatabasemovingfrom1.xto2.0versionsofAndroid.Thistutorialwillbebrokeninto3sections.FirstcoveringaccessingcontactsinAndroid2.0.Thesecondpagewilldealwith
accessingthecontactsinAndroid1.6andbefore.Thirdwellglueitalltogetherwithaclassthatabstractsspecificclassesforeachversionandasetofclassestomanagethedatafromthecontactrecords.
CreateanewprojectcalledTestContactsinEclipsesetupforAndroid2.0.
AndroidContactAPIFor2.0
GrantingAccess
BeforeanapplicationcanquerythecontactrecordsaccessmustbegrantedthroughtheAndroidManifest.xmlfilestoredintherootoftheproject.Addthefollowinguses-permissionbelowstheuses-sdkstatement.
uses-permissionandroid:name=android.permission.READ_CONTACTS/
QueryingTheAndroidContactDatabase
RetrievingContactDetails
BasiccontactinformationstoredinContactstablewithdetailedinformationstoredinindividualtablesfornormalization.InAndroid2.0toquerythebasecontactrecordstheURItoqueryisstoredinContactsContract.Contacts.CONTENT_URI.
packagehigherpass.TestContacts;
importandroid.app.Activity;
importandroid.content.ContentResolver;importandroid.database.Cursor;
importandroid.os.Bundle;
importvider.ContactsContract;
publicclassTestContactsextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/@Override
publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ContentResolvercr=getContentResolver();
Cursorcur=cr.query(ContactsContract.Contacts.CONTENT_URI,
null,null,null,null);if(cur.getCount()0){
while(cur.moveToNext()){Stringid=cur.getString(
cur.getColumnIndex(ContactsCo