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


因為有個需求,需要調用系統電話薄,實現增刪改查后並實時刷新頁面,寫了個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     @Override
105     public boolean onContextItemSelected(MenuItem item)
106     {
107         AdapterView.AdapterContextMenuInfo info;
108         try
109         {
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     @Override
136     protected void onResume() {
137         // TODO Auto-generated method stub
138         getquery();
139         super.onResume();
140     }
141     
142 }
143     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM