【问题标题】:How to list all inbox SMS in Xamarin.Forms如何在 Xamarin.Forms 中列出所有收件箱短信
【发布时间】:2022-11-04 09:15:04
【问题描述】:

我想在按下按钮时显示电话中的所有短信。要显示的信息是电话号码和内容消息。

当有人向我发送短信(应用程序运行或后台)时,我已经有了接收短信的方法,但没有立即获取所有短信的解决方案。 (Xamarin.Forms)

我尝试下面的代码,但在 ContentResolver.Query(uri, reqCols, null, null, null); 中出现错误 => CS0120:非静态字段、方法或属性“成员”需要对象引用

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());

        }
    }

【问题讨论】:

  • 你不能在 iOS 中做到这一点
  • 先试试安卓
  • 关于如何在 Android 上执行此操作存在许多现有问题:google.com/search?q=android+list+sms+site:stackoverflow.com
  • 但是有Xamarin.Android。我已经尝试在 Xamarin.Forms 中不起作用
  • 我不会为你编写代码。我只是给了你一个链接到如何做到这一点的几十个例子。如果您在实现它时遇到问题,请发布您编写的代码并描述您遇到的具体问题。

标签: xamarin xamarin.forms


【解决方案1】:
    public List<string> GetAllSms()
    {
        var list = new List<string>();
        Android.Content.Context context = Android.App.Application.Context;
        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 = context.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]));

                list.Add(address);

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

            } while (cursor.MoveToNext());

        }

        return list;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多