android調用系統電話薄,實現增刪改查。

來源:互聯網
上載者:User

因為有個需求,需要調用系統電話薄,實現增刪改查後並即時重新整理頁面,寫了個demo供大家參考,取連絡人名字跟手機號碼展示在Listview上,單擊出現連絡人的詳細情況,長按出現操作功能表,彈出編輯刪除菜單,下面請看代碼。

首先在Androidmainifest中添加對電話薄的讀寫權限。

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

因為繼承於ListActivity,沒有用到設定檔,下面貼出java代碼。

  1 package com.android;  2 import android.app.ListActivity;  3 import android.content.ContentUris;  4 import android.content.Intent;  5 import android.database.Cursor;  6 import android.net.Uri;  7 import android.os.Bundle;  8 import android.provider.Contacts.People;  9 import android.provider.ContactsContract; 10 import android.view.ContextMenu; 11 import android.view.Menu; 12 import android.view.MenuItem; 13 import android.view.View; 14 import android.view.ContextMenu.ContextMenuInfo; 15 import android.widget.AdapterView; 16 import android.widget.ListView; 17 import android.widget.SimpleCursorAdapter; 18  19 public class TkActivity extends  ListActivity { 20     private static final int AddContact_ID = Menu.FIRST; 21     private static final int delete = Menu.FIRST+1; 22     private static final int edit = Menu.FIRST+2;         23     /** Called when the activity is first created. */ 24     @Override 25     public void onCreate(Bundle savedInstanceState) { 26         super.onCreate(savedInstanceState); 27         getListView().setOnCreateContextMenuListener(this); 28         getquery();        29     } 30      31     public void getquery(){ 32       @SuppressWarnings("deprecation") 33     Cursor  cursor = this.getContentResolver().query(People.CONTENT_URI, null, 34                 null, null, null); 35       @SuppressWarnings("deprecation") 36     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 37               android.R.layout.simple_list_item_2, 38               cursor, 39               new String[] {People.NAME, People.NUMBER }, 40               new int[] { android.R.id.text1, android.R.id.text2 }); 41           setListAdapter(adapter);             42     }    43      44     //監聽每個item,按下顯示詳細電話內容 45     protected void onListItemClick(ListView l, View v, int position, long id)    46     {    47         Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);            48             //查看連絡人 49             startActivity(new Intent(Intent.ACTION_VIEW, uri));             50     }   51      52     public boolean onCreateOptionsMenu(Menu menu)  53     { 54         super.onCreateOptionsMenu(menu); 55         //新增連絡人... 56         menu.add(0, AddContact_ID, 0, "添加");   57         return true;    58     } 59      60     public boolean onOptionsItemSelected(MenuItem item)  61     { 62         switch (item.getItemId())  63         { 64         case AddContact_ID: 65             //新增連絡人... 66             Intent intent = new Intent(); 67             //為Intent設定Action屬性(動作為:編輯) 68             intent.setAction(Intent.ACTION_INSERT); 69             String data = "content://com.android.contacts/contacts"; 70             //根據指定字串解析出Uri對象 71             Uri uri = Uri.parse(data);                 72             //設定Data屬性 73             intent.setData(uri); 74             startActivity(intent);    75             getquery(); 76         } 77         return super.onOptionsItemSelected(item); 78     } 79      80    //長按菜單 81     public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) 82     { 83         AdapterView.AdapterContextMenuInfo info; 84         try 85         { 86             info = (AdapterView.AdapterContextMenuInfo) menuInfo; 87         } 88         catch (ClassCastException e) 89         { 90             return; 91         } 92         //得到長按的資料項目 93         Cursor cursor = (Cursor) getListAdapter().getItem(info.position); 94         if (cursor == null) 95         { 96             return; 97         } 98         menu.setHeaderTitle(cursor.getString(1)); 99         //添加刪除菜單100         menu.add(0, delete, 0, "刪除");101         menu.add(0,edit,1,"編輯");102     }103     104     @Override105     public boolean onContextItemSelected(MenuItem item)106     {107         AdapterView.AdapterContextMenuInfo info;108         try109         {110             info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();111         }112         catch (ClassCastException e)113         {114             return false;115         }116 117         switch (item.getItemId())118         {119             case delete:120             {121                 //刪除一條記錄122                 Uri noteUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, info.id);123                 getContentResolver().delete(noteUri, null, null);124                 getquery();125                 return true;126             }127             case edit:128                 Uri editUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, info.id);129                 startActivity(new Intent(Intent.ACTION_EDIT, editUri));  130                 getquery();                131         }132         return false;133     }134     135     @Override136     protected void onResume() {137         // TODO Auto-generated method stub138         getquery();139         super.onResume();140     }141     142 }143     
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.