C# 如何在Xamarin.Android中获取所有短信
我正在开发一个关于Xamarin表单的应用程序。我需要从设备获取所有信息,这是否可能以及如何实现?这里是一个简单的示例,您可以在设备中获取短信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&
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来获取光标数据