1 … 2 forms定义接口 3 4 using System; 5 using System.Collections; 6 using System.Collections.Generic; 7 8 namespace 9 { 10 public interface ISystemContact 11 { 12 //获取所有联系人 13 List<String> GetSystemContact (); 14 //插入联系人 15 bool InsertContact(string name,string number); 16 //根据姓名查找联系人电话 17 List<string> GetPhoneByName(string name); 18 } 19 } 20 21 平台实现 22 using System; 23 using Android.Content; 24 using Android.Provider; 25 using Xamarin.Forms; 26 using Android.App; 27 using System.Collections; 28 using System.Collections.Generic; 29 using.TDroid; 30 31 [assembly:Dependency(typeof(SystemContact))] 32 namespace.TDroid 33 { 34 public class SystemContact:Java.Lang.Object,ISystemContact 35 { 36 public SystemContact() 37 { 38 39 } 40 public List<String> GetSystemContact() 41 { 42 // Hashtable hshTable = new Hashtable (); 43 // var uri=ContactsContract.Contacts.ContentUri; 44 // string[] projection = { 45 // ContactsContract.Contacts.InterfaceConsts.Id, 46 // ContactsContract.Contacts.InterfaceConsts.DisplayName, 47 // ContactsContract.Contacts.InterfaceConsts.PhotoThumbnailUri, 48 // ContactsContract.Contacts.InterfaceConsts.HasPhoneNumber, 49 // }; 50 // var cursor = ((Activity)Forms.Context).ManagedQuery (uri,projection,null,null,null); 51 // if (cursor.MoveToFirst ()) { 52 // do{ 53 // string _id=cursor.GetString(cursor.GetColumnIndex(projection[0])); 54 // string _name=cursor.GetString(cursor.GetColumnIndex(projection[1])); 55 // List<string> _number=new List<string> (); 56 // int fla=cursor.GetInt(cursor.GetColumnIndex(projection[3])); 57 // if(fla>0){ 58 // var cur_phone = ((Activity)Forms.Context).ManagedQuery (ContactsContract.CommonDataKinds.Phone.ContentUri,null,null, null, null); 59 // if(cur_phone.MoveToFirst()){ 60 // do{ 61 // //遍历所有的电话号码 62 // String phoneNumber= cur_phone.GetString(cur_phone.GetColumnIndex(ContactsContract.CommonDataKinds.Phone.Number)); 63 // _number.Add(phoneNumber); 64 // }while(cur_phone.MoveToNext()); 65 // } 66 // } 67 // hshTable.Add(_name,_number); 68 // }while(cursor.MoveToNext()); 69 // } 70 List<string> hshtable = new List<string> (); 71 var cur_phone = ((Activity)Forms.Context).ManagedQuery 72 (ContactsContract.CommonDataKinds.Phone.ContentUri,null,null, null, null); 73 if (cur_phone != null&&cur_phone.MoveToFirst()) { 74 do { 75 string[] _names = cur_phone.GetColumnNames (); 76 var _number = cur_phone.GetString (cur_phone.GetColumnIndex ("data1")); 77 var _name = cur_phone.GetString (cur_phone.GetColumnIndex ("display_name")); 78 hshtable.Add(_name+":"+_number); 79 } while(cur_phone.MoveToNext ()); 80 } 81 return hshtable; 82 } 83 84 //添加联系人,号码 姓名 重复则覆盖 85 public bool InsertContact(string name,string number){ 86 try{ 87 ContentValues values = new ContentValues (); 88 Android.Net.Uri rawContactUri=((Activity)Forms.Context).ContentResolver 89 .Insert (Android.Provider.ContactsContract.RawContacts.ContentUri,values); 90 long rawContactId= ContentUris.ParseId (rawContactUri); 91 //添加姓名 92 values.Clear (); 93 values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactId); 94 values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider 95 .ContactsContract.CommonDataKinds.StructuredName.ContentItemType); 96 values.Put (Android.Provider.ContactsContract.CommonDataKinds.StructuredName.GivenName,name); 97 ((Activity)Forms.Context).ContentResolver.Insert (Android.Provider.ContactsContract.Data.ContentUri,values); 98 //添加号码 99 values.Clear (); 100 values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactId); 101 values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider 102 .ContactsContract.CommonDataKinds.Phone.ContentItemType); 103 values.Put (Android.Provider.ContactsContract.CommonDataKinds.Phone.Number,number); 104 values.Put (Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts 105 .Type,Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.TypeCustom); 106 ((Activity)Forms.Context).ContentResolver.Insert (Android.Provider.ContactsContract.Data.ContentUri,values); 107 108 //添加email 109 /* 110 values.Clear (); 111 values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactId); 112 values.Put (Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider.ContactsContract.CommonDataKinds.Email.ContentItemType); 113 values.Put (Android.Provider.ContactsContract.CommonDataKinds.Email.InterfaceConsts.Data,"[email protected]"); 114 values.Put (Android.Provider.ContactsContract.CommonDataKinds.Email.InterfaceConsts.Type,Android.Provider.ContactsContract.CommonDataKinds.Email.InterfaceConsts.TypeCustom); 115 ((Activity)Forms.Context).ContentResolver.Insert (Android.Provider.ContactsContract.Data.ContentUri,values); 116 */ 117 return true; 118 } 119 catch(Exception ex){ 120 return false; 121 } 122 } 123 124 public List<string> GetPhoneByName(string name){ 125 List<string> listPhone = new List<string> (); 126 string id = GetContactId (name); 127 if (id.Equals ("0")) { 128 System.Diagnostics.Debug.WriteLine (name + " not exist"); 129 } else { 130 try{ 131 var cursor = ((Activity)Forms.Context).ManagedQuery 132 (ContactsContract.CommonDataKinds.Phone.ContentUri, 133 new string[]{Android.Provider.ContactsContract.CommonDataKinds.Phone.Number, 134 Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Type}, 135 Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.ContactId+ "=‘" + id + "‘", 136 null, 137 null); 138 while(cursor.MoveToNext()){ 139 string phone = cursor.GetString( 140 cursor.GetColumnIndex(Android.Provider.ContactsContract.CommonDataKinds.Phone.Number)); 141 listPhone.Add(phone); 142 } 143 }catch(Exception e){ 144 145 } 146 } 147 return listPhone; 148 } 149 150 151 private string GetContactId(string name){ 152 string id = "0"; 153 try{ 154 var cursor = ((Activity)Forms.Context).ManagedQuery 155 (Android.Provider.ContactsContract.Contacts.ContentUri, 156 new string[]{Android.Provider.ContactsContract.Contacts.InterfaceConsts.Id}, 157 Android.Provider.ContactsContract.Contacts.InterfaceConsts.DisplayName + "=‘" + name + "‘", 158 null, 159 null); 160 if(cursor!=null){ 161 int count = 0; 162 while(cursor.MoveToNext()){ 163 //string phone; 164 //id = cursor.GetString(cursor.GetColumnIndex(Android.Provider.ContactsContract.Contacts.InterfaceConsts.Id)); 165 //System.Diagnostics.Debug.WriteLine(name + ":" + id); 166 count ++; 167 } 168 if(count>1){ 169 return id; 170 }else{ 171 if(cursor.MoveToFirst()){ 172 id = cursor.GetString(cursor.GetColumnIndex(Android.Provider.ContactsContract.Contacts.InterfaceConsts.Id)); 173 System.Diagnostics.Debug.WriteLine(name + ":" + id); 174 } 175 } 176 } 177 }catch(Exception e){ 178 179 } 180 return id; 181 } 182 183 } 184 }
时间: 2024-10-13 18:58:45