2017-02-13 85 views
0

我在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

回答

0

如果有人需要它,我終於找到了如何做到這一點:

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; 

      } 
     }