1. 程式人生 > >Pro Android學習筆記(一六四):聯絡人API(7):新增聯絡人

Pro Android學習筆記(一六四):聯絡人API(7):新增聯絡人

新增新的聯絡人,就要增添raw contacts,需要android.permission.WRITE_CONTACTS的許可權。下面是程式碼片段:

	//新增聯絡人的程式碼片段,入口為addContactTest()。showInfo()為在activity框中顯示資訊或其他顯示資訊的方式
	private void addContactTest(String name, String phoneNumber){
		showInfo("【1】insert a raw contact into table raw_contacts"); 
		long rawContactId = insertRawContact();
		showInfo("\n【2】insert the name("+name +") in table data");
		insertName(rawContactId,name);
		showInfo("\n【3】insert the phone number(" + phoneNumber+ ") in table data");
		insertPhone(rawContactId,phoneNumber);
		showInfo("\n【4】Now, look at the raw contact info");
		showRawContactInfo(rawContactId);
	}
	
	/*【1】在table raw_contacts表中增添entry,使用的uri為RawContacts.CONTENT_URI,指定所屬的賬號
	 * ,即account type和account name。*/
	private long insertRawContact(){
		ContentValues cv = new ContentValues();
		cv.put(RawContacts.ACCOUNT_TYPE,"cn.wei"); 
		cv.put(RawContacts.ACCOUNT_NAME, "
[email protected]
"); ContentResolver cr = mContext.getContentResolver(); Uri rawContactUri = cr.insert(RawContacts.CONTENT_URI, cv); showInfo("raw contact uri = " + rawContactUri.toString()); return ContentUris.parseId(rawContactUri); } /*【2】raw contacts的具體資訊是存放在table data中的,下面程式碼在data表中新增該raw contact的具體資訊: displayname * table data使用的uri為Data.CONTENT_URI */ private void insertName(long rawContactId, String name){ ContentValues cv = new ContentValues(); cv.put(Data.RAW_CONTACT_ID,rawContactId); cv.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);//vnd.android.cursor.item/name cv.put(StructuredName.DISPLAY_NAME, name); //對應data1 Uri uri = mContext.getContentResolver().insert(Data.CONTENT_URI, cv); showInfo("uri=" + (uri == null ? "null" : uri.toString())); } /*【3】在data表中新增該raw contact的具體資訊: phone */ private void insertPhone(long rawContactId, String phoneNumber){ ContentValues cv = new ContentValues(); cv.put(Data.RAW_CONTACT_ID,rawContactId); cv.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);//vnd.android.cursor.item/phone_v2 cv.put(Phone.NUMBER, phoneNumber); //data2 cv.put(Phone.TYPE,Phone.TYPE_HOME); //data1 Uri uri = mContext.getContentResolver().insert(Data.CONTENT_URI, cv); showInfo("uri=" + (uri == null ? "null" : uri.toString())); } /*【4】顯示該raw contact的詳細資訊,通過raw contract id進行索引,getACursor()以及ContactInfo見前一學習筆記的小例子*/ private void showRawContactInfo(long rawContactId){ Cursor c = null; try{ c = getACurosor(ContactsContract.RawContactsEntity.CONTENT_URI.toString(),"_id=" + rawContactId); for(c.moveToFirst(); !c.isAfterLast() ; c.moveToNext()){ ContactInfo one = new ContactInfo(); one.fillinFrom(c); showInfo("【】" + one.toString()); } }finally{ if(c != null) c.close(); } }

下面是小例子的執行截圖,以及執行後在系統中檢視聯絡人的結果:

  

小例子下載

相關推薦

Pro Android學習筆記 瞭解Intent 中

Intent的構成Intent可以帶有action,data(由URI表達),extra data(key/value map,鍵值對),指定的類名(成為component name)。一個intent至少攜帶上述的一個內容。Action。Action名,在上一筆記中已經給出兩種例子,一種是系統自帶的,如In

Pro Android學習筆記聯絡人API7新增聯絡人

新增新的聯絡人,就要增添raw contacts,需要android.permission.WRITE_CONTACTS的許可權。下面是程式碼片段: //新增聯絡人的程式碼片段,入口為addContactTest()。showInfo()為在activity框中顯示資訊

Pro Android學習筆記聯絡人API5讀Raw Contacts

我們將讀取Raw Contacts的資訊。 Raw Contacts提供的資訊 程式碼和之前獲取整合聯絡人的表頭資訊類似,只是URI不同,Raw contacts的URI為ContactsContract.RawContacts.CONTENT_URI。 private void showHasWhat

Pro Android學習筆記聯絡人API3聯絡人資料

聯絡人資訊 檢視reference中android.provider.ContactsContract.CommonDataKinds可以知道該版本的Android API聯絡人中帶有哪些資訊。在API level 19中,我們看到有以下的資訊: 而各個資訊,例如Email,又有著他的結構,我們可以繼續

Pro Android學習筆記三七Home Screen Widgets3配置Activity

map onclick widgets info xtra ces extends height appwidget 文章轉載僅僅能用於非商業性質,且不能帶有虛擬貨幣、積分、註冊等附加條件。轉載須註明出處http://blog.csdn.net/flowingfly

Pro Android學習筆記 Menu5 動態選單

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記五五 感測器5 磁場感測器和方位

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記 Preferences4 MultiSelect List Preferen

ListPreference提供單選列表,我們可以通過CheckBoxPreference提供多選列表。此外,Android在3.0後提供MultiSelectListPreference,它的實現和ListPreference相似,不同的是還可以不選擇或者多個選擇。如圖所示。XML檔案在複合例子中加入相關的

Pro Android學習筆記——ContentProvider

ContentProvider,Android四大元件之一。他是系統提供的一種抽象的資料服務。Android Developer對她的概述為:   大概意思就是說ContentProvider(內容提供者)就是為應用程式提供資料。他壓縮資料並通過ContentResol

Pro Android學習筆記五七感測器7其他一些感測器

Wei:本來想下面接著的是NFC,NFC是支援讀寫的,和其他感測器在程式設計上很不一樣,但是手頭上找不到支援NFC的手機,記得以前三星Galaxy系列支援,例如幾年前的S3,而國產手機要比較貴的才支援,P6和Z7 mini都不支援,有興趣可以閱讀http://blog.csdn.net/pku_andro

Pro Android學習筆記Fragment7切換效果

利用fragment transaction進行切換,很方便提供切換的效果。 利用setTransition() 通過setTransition()我們可以設定有限幾個切換效果,程式碼如下:     protected void addFragmentToStack(int index){       

Pro Android學習筆記五四感測器4陀螺儀、加速感測器

陀螺儀 陀螺儀(Gyroscope sensor)測量裝置轉動的角速度。最早的陀螺儀發明在中國,科學應用則在西方,陀螺儀是為士大夫坐轎子看書是免收燭光搖曳發明的,這在很久之前一部西方拍的科教片看到,具體名字忘了。Pro Android 4.0中說陀螺儀的誤差會慢慢積累,因此通與加速感測器一致使用,通過Ka

Pro Android學習筆記Dialog2DialogFragment

DialogFragment的例項newInstance()已經在上一次學習筆記中實現。我們建立dialog的UI,可以通過重寫DialogFragment的兩個函式當中的一個來實現,這兩個函式是onCreateView()和onCreateDialog(),前者返回view,後者返回dialog,如同通過

Pro Android學習筆記HTTP服務3HTTP POST MultiPart

HTTP POST不僅可以通過鍵值對傳遞引數,還可以攜帶更為複雜的引數,例如檔案。HTTP Post支援攜帶body,content-type為multipart。本次我們將嘗試通過http post上傳一個小檔案。 建立測試環境 上傳檔案的測試環境很難找,下載了Tomcat,想裝一個環境,開啟後,發現忘得

Pro Android學習筆記 ActionBar1Home圖標區

ces tom 新的 方便 find rac vertica lba manifest ?? Pro Android學習筆記(四八):ActionBar(1):Home圖標區 2013年03月10日 ? 綜合 ? 共 3256字 ? 字號 小 中 大 ? 評論關閉

Pro Android學習筆記三十 Menu1 瞭解Menu

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記十二 瞭解Intent

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Pro Android學習筆記 一一 Location 2 LocationManager的位置獲取

LocationManager提供兩個主要功能:1、獲取裝置的地理位置(經緯度);2、當裝置進入制定的地理位置,通過通過intent通知。獲取位置資訊的基本方法簡單的程式碼片段如下:private void getMyLocation(){    //1、獲取LocationManager,LocationM

Pro Android學習筆記 安全和許可權 3 Provider許可權

訪問其他應用的content provider我們在ProPermission中提供了一個content provider,成為PrivProvider,然後在ProPermissionClient中對呼叫這個provider介面。在ProPermission的AndroidManifest.xml中,對pr

Pro Android學習筆記五一 ActionBar4 標準和Tab模式

之前,我們學習的Action Bar是標準模式,Tab模式的如下圖所示。對於Tab,我們在Android學習筆記(二二): 多頁顯示-Tag的使用中學習過,但Action Bar的tab更適合fragment的使用。我們在之前實現的標準Action Bar的基礎上新增導航用的tab,程式碼如下:public