C# 如何在Xamarin.Android中获取所有短信

C# 如何在Xamarin.Android中获取所有短信,c#,xamarin,xamarin.forms,xamarin.android,C#,Xamarin,Xamarin.forms,Xamarin.android,我正在开发一个关于Xamarin表单的应用程序。我需要从设备获取所有信息,这是否可能以及如何实现?这里是一个简单的示例,您可以在设备中获取短信 string[] items; public void getAllSms() { string INBOX = "content://sms/inbox"; string[] reqCols = new string[] { "_id", "thread_id&

我正在开发一个关于Xamarin表单的应用程序。我需要从设备获取所有信息,这是否可能以及如何实现?

这里是一个简单的示例,您可以在设备中获取短信

string[] items;
public void getAllSms()
    {

        string INBOX = "content://sms/inbox";
        string[] reqCols = new string[] { "_id", "thread_id", "address", "person", "date", "body", "type" };
        Android.Net.Uri uri = Android.Net.Uri.Parse(INBOX);
        var cursor = ContentResolver.Query(uri, reqCols, null, null, null);

        if (cursor.MoveToFirst())
        {
            do
            {
                String messageId = cursor.GetString(cursor.GetColumnIndex(reqCols[0]));
                String threadId = cursor.GetString(cursor.GetColumnIndex(reqCols[1]));
                String address = cursor.GetString(cursor.GetColumnIndex(reqCols[2]));
                String name = cursor.GetString(cursor.GetColumnIndex(reqCols[3]));
                String date = cursor.GetString(cursor.GetColumnIndex(reqCols[4]));
                String msg = cursor.GetString(cursor.GetColumnIndex(reqCols[5]));
                String type = cursor.GetString(cursor.GetColumnIndex(reqCols[6]));

                items = new string[] {
       ((messageId + (","
                        + (threadId + (","
                        + (address + (","
                        + (name + (","
                        + (date + (" ,"
                        + (msg + (" ," + type))))))))))))) };

            } while (cursor.MoveToNext());

        }
    }
如果您的设备android版本高于5,则需要rquest运行时权限

RequestPermissions(new string[] { Manifest.Permission.ReadSms }, 0);

@不幸的是,在Xamarin.Android中,ContentResolver中的方法查询不是静态的。我试图创建ContentResolver的实例,但它是一个抽象类:(您遇到了什么问题?它在我这边起作用。感谢您的解决方案,我解决了ContentResolver的一个问题。我必须使用Android.App.Application.Context.ContentResolver.Query来获取光标数据