Forms Android Contacts
2015-07-31 23:06
501 查看
… forms定义接口 using System; using System.Collections; using System.Collections.Generic; namespace { public interface ISystemContact { //获取所有联系人 List<String> GetSystemContact (); //插入联系人 bool InsertContact(string name,string number); //根据姓名查找联系人电话 List<string> GetPhoneByName(string name); } } 平台实现 using System; using Android.Content; using Android.Provider; using Xamarin.Forms; using Android.App; using System.Collections; using System.Collections.Generic; using.TDroid; [assembly:Dependency(typeof(SystemContact))] namespace.TDroid { public class SystemContact:Java.Lang.Object,ISystemContact { public SystemContact() { } public List<String> GetSystemContact() { // Hashtable hshTable = new Hashtable (); // var uri=ContactsContract.Contacts.ContentUri; // string[] projection = { // ContactsContract.Contacts.InterfaceConsts.Id, // ContactsContract.Contacts.InterfaceConsts.DisplayName, // ContactsContract.Contacts.InterfaceConsts.PhotoThumbnailUri, // ContactsContract.Contacts.InterfaceConsts.HasPhoneNumber, // }; // var cursor = ((Activity)Forms.Context).ManagedQuery (uri,projection,null,null,null); // if (cursor.MoveToFirst ()) { // do{ // string _id=cursor.GetString(cursor.GetColumnIndex(projection[0])); // string _name=cursor.GetString(cursor.GetColumnIndex(projection[1])); // List<string> _number=new List<string> (); // int fla=cursor.GetInt(cursor.GetColumnIndex(projection[3])); // if(fla>0){ // var cur_phone = ((Activity)Forms.Context).ManagedQuery (ContactsContract.CommonDataKinds.Phone.ContentUri,null,null, null, null); // if(cur_phone.MoveToFirst()){ // do{ // //遍历所有的电话号码 // String phoneNumber= cur_phone.GetString(cur_phone.GetColumnIndex(ContactsContract.CommonDataKinds.Phone.Number)); // _number.Add(phoneNumber); // }while(cur_phone.MoveToNext()); // } // } // hshTable.Add(_name,_number); // }while(cursor.MoveToNext()); // } List<string> hshtable = new List<string> (); var cur_phone = ((Activity)Forms.Context).ManagedQuery (ContactsContract.CommonDataKinds.Phone.ContentUri,null,null, null, null); if (cur_phone != null&&cur_phone.MoveToFirst()) { do { string[] _names = cur_phone.GetColumnNames (); var _number = cur_phone.GetString (cur_phone.GetColumnIndex ("data1")); var _name = cur_phone.GetString (cur_phone.GetColumnIndex ("display_name")); hshtable.Add(_name+":"+_number); } while(cur_phone.MoveToNext ()); } return hshtable; } //添加联系人,号码 姓名 重复则覆盖 public bool InsertContact(string name,string number){ try{ ContentValues values = new ContentValues (); Android.Net.Uri rawContactUri=((Activity)Forms.Context).ContentResolver .Insert (Android.Provider.ContactsContract.RawContacts.ContentUri,values); long rawContactId= ContentUris.ParseId (rawContactUri); //添加姓名 values.Clear (); values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactId); values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider .ContactsContract.CommonDataKinds.StructuredName.ContentItemType); values.Put (Android.Provider.ContactsContract.CommonDataKinds.StructuredName.GivenName,name); ((Activity)Forms.Context).ContentResolver.Insert (Android.Provider.ContactsContract.Data.ContentUri,values); //添加号码 values.Clear (); values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactId); values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider .ContactsContract.CommonDataKinds.Phone.ContentItemType); values.Put (Android.Provider.ContactsContract.CommonDataKinds.Phone.Number,number); values.Put (Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts .Type,Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.TypeCustom); ((Activity)Forms.Context).ContentResolver.Insert (Android.Provider.ContactsContract.Data.ContentUri,values); //添加email /* values.Clear (); values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactId); values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider.ContactsContract.CommonDataKinds.Email.ContentItemType); values.Put (Android.Provider.ContactsContract.CommonDataKinds.Email.InterfaceConsts.Data,"111@qq.com"); values.Put (Android.Provider.ContactsContract.CommonDataKinds.Email.InterfaceConsts.Type,Android.Provider.ContactsContract.CommonDataKinds.Email.InterfaceConsts.TypeCustom); ((Activity)Forms.Context).ContentResolver.Insert (Android.Provider.ContactsContract.Data.ContentUri,values); */ return true; } catch(Exception ex){ return false; } } public List<string> GetPhoneByName(string name){ List<string> listPhone = new List<string> (); string id = GetContactId (name); if (id.Equals ("0")) { System.Diagnostics.Debug.WriteLine (name + " not exist"); } else { try{ var cursor = ((Activity)Forms.Context).ManagedQuery (ContactsContract.CommonDataKinds.Phone.ContentUri, new string[]{Android.Provider.ContactsContract.CommonDataKinds.Phone.Number, Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Type}, Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.ContactId+ "='" + id + "'", null, null); while(cursor.MoveToNext()){ string phone = cursor.GetString( cursor.GetColumnIndex(Android.Provider.ContactsContract.CommonDataKinds.Phone.Number)); listPhone.Add(phone); } }catch(Exception e){ } } return listPhone; } private string GetContactId(string name){ string id = "0"; try{ var cursor = ((Activity)Forms.Context).ManagedQuery (Android.Provider.ContactsContract.Contacts.ContentUri, new string[]{Android.Provider.ContactsContract.Contacts.InterfaceConsts.Id}, Android.Provider.ContactsContract.Contacts.InterfaceConsts.DisplayName + "='" + name + "'", null, null); if(cursor!=null){ int count = 0; while(cursor.MoveToNext()){ //string phone; //id = cursor.GetString(cursor.GetColumnIndex(Android.Provider.ContactsContract.Contacts.InterfaceConsts.Id)); //System.Diagnostics.Debug.WriteLine(name + ":" + id); count ++; } if(count>1){ return id; }else{ if(cursor.MoveToFirst()){ id = cursor.GetString(cursor.GetColumnIndex(Android.Provider.ContactsContract.Contacts.InterfaceConsts.Id)); System.Diagnostics.Debug.WriteLine(name + ":" + id); } } } }catch(Exception e){ } return id; } } }
View Code
相关文章推荐
- Forms Android SMS
- 如何在Android Gradle中添加原生so文件依赖
- Forms Android System Download
- Forms Android Bitmap 处理
- 如何使用Android MediaStore裁剪大图片
- J哥---------Android 多线程下载 仿下载助手(改进版)
- Android大图片裁剪终极解决方案(下:拍照截图)
- Android Service与Activity之间通信的几种方式(1)---通过broadcast(广播)的形式
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android 动画系列
- Android大图片裁剪终极解决方案(上:原理分析)
- Android固定标题栏/底栏方法
- android的Spinner控件的自定义样式设置以及ArrayAdapter的使用
- Android Shape画圆,矩形
- android用dp还是sp还是px等
- Android 图片平铺效果实现的3种方法
- [android]多次点击的控制
- Android 通过Uri获取Bitmap对象
- Android--基于Message的进程间通信
- Android 笔记之Cursor 类