Xamarin访问通讯录获得信息

Xamarin访问通讯录获得信息

问题描述:

我在Android设备上(Xamarin)应用工作,这里就是我想要做的:Xamarin访问通讯录获得信息

当上一个按钮,用户点击时,他可以选择在联系人的联系人然后名称和电话号码写入2 editText(姓名和电话号码)

我该如何访问联系簿并获取我需要的数据?

这里是我的代码现在:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.Preferences; 
using Android.Provider; 

namespace EmergencyCall 
{ 
    [Activity(Label = "AddContact")] 
    public class AddContact : Activity 
    { 
     EditText nom; 
     EditText numero; 
     Button save; 
     Button addFromReper; 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 

      SetContentView(Resource.Layout.add_Contact); 
      nom = FindViewById<EditText>(Resource.Id.nomPersonne); 
      numero = FindViewById<EditText>(Resource.Id.NumeroTel); 
      save = FindViewById<Button>(Resource.Id.saveNewContact); 
      addFromReper = FindViewById<Button>(Resource.Id.addFromRepert); 
      ISharedPreferences prefs; 
      ISharedPreferencesEditor editor; 
      prefs = PreferenceManager.GetDefaultSharedPreferences(ApplicationContext); 
      editor = prefs.Edit(); 


      save.Click += delegate 
      { 
       ISet<String> names = new HashSet<String> (prefs.GetStringSet("NomsContacts", new HashSet<String>())); 
       names.Add(nom.Text); 
       editor.PutStringSet("NomsContacts", names); 
       editor.PutString(nom.Text, numero.Text); 
       editor.Apply(); 
       StartActivity(typeof(ModifyContacts)); 
      }; 

      addFromReper.Click += delegate 
      { 
       Intent intent = new Intent(Intent.ActionPick,  Contacts.ContentUri); 
       StartActivityForResult(intent, 1); 
      }; 

     } 

    } 
} 

谢谢:)

+0

https://开头developer.xamarin.com/recipes/android/data/contentproviders/read_contacts/ – SushiHangover

如果有人需要它,我终于找到了如何做到这一点:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
    { 
     base.OnActivityResult(requestCode, resultCode, data); 
     if (requestCode == 1) 
     { 

      if (resultCode == Result.Ok) 
      { 
       Android.Net.Uri contactData = data.Data; 
       ICursor cursor = ContentResolver.Query(contactData, null, null, null, null); 

       cursor.MoveToFirst(); 
       string name = cursor.GetString(cursor.GetColumnIndexOrThrow(ContactsContract.Contacts.InterfaceConsts.DisplayName)); 
       string number = cursor.GetString(cursor.GetColumnIndexOrThrow(Android.Provider.ContactsContract.CommonDataKinds.Phone.Number)); 

       nom.Text=name; 
       numero.Text = number; 

      } 
     }