• 1400/01/27

دریافت و خواندن sms :

سلام در رابطه با ارسال اس ام اس در زامارین فرمز یک کلاس وجود داشت ، اما چطور میشه اس ام اس هایی که به گوشی فرستاده میشه رو دریافت کرد و خواند؟

  • 1400/01/27
  • ساعت 18:08

سلام 

من تجربه ای در این مورد ندارم و فکر هم نکنم سیستم عامل اجازه بده 

سرچ کنید به نتیجه میرسید


  • 1400/01/27
  • ساعت 21:51

زامارین اندروید چطور؟ توی زامارین اندروید این قابلیت وجود داره؟


  • 1400/01/27
  • ساعت 21:57

قبلا ها میشد ولی در سیستم جدید اندروید این اجازه رو نمیده 

البته مطمئن نیستم ، تحقیق کنم


  • 1400/01/31
  • ساعت 18:47

سلام دوستان من تحقیق کردم و راهش رو پیدا کردم باهاتون به اشتراک میزارم

 

1) ابتدا روی پروژه اندروید راست کلیک کنید و properties رو بزنید.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

2)در android manifest و بخش Required Permissions کلمه sms رو تایپ کنید و تیک گزینه read و receive رو بزنید.

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

3)در پروژه xamarin.android  قسمت properties را باز کنید و فایل AssemblyInfo.cs رو بازکنید و این دو خط کد رو بهش اضافه کنید.

[assembly: UsesPermission(Android.Manifest.Permission.ReadSms)]
[assembly: UsesPermission(Android.Manifest.Permission.ReceiveSms)]

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

4)حالا شما باید از کاربر اجازه خواندن sms ها رو از کاربر بگیرید .

 using Xamarin.Essentials;
 
 
 
  private async void AskPermisson()
  {
     var permission = await Permissions.CheckStatusAsync<Permissions.Sms>();
            if (permission != PermissionStatus.Granted)
            {
                permission = await Permissions.RequestAsync<Permissions.Sms>();
            }
  }

این متد درخواست خواندن اس ام اس ها از کاربر هست به سلیقه خودتون ازش استفاده کنید مثلا برای رویداد کلیک یک دکمه.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

5)از این متد برای گرفتن تمام اس ام اس های کاربر استفاده کنید.

  public  List<string[]> GetAllSmses()
        {
            List<string[]> AllSmses = new List<string[]>();

            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);
            
            //اگر هنگام استفاده از متد در این خط ارور دریافت کردید متد رو داخل mainactivity بگزارید
            var cursor = ContentResolver.Query(uri, reqCols, null, null, null);
            
            if (cursor.MoveToFirst())
            {
                do
                {
                    String address = cursor.GetString(cursor.GetColumnIndex(reqCols[2]));
                    string body = cursor.GetString(cursor.GetColumnIndex(reqCols[5]));

                    string[] item = { address, body };
               

                    AllSmses.Add(item);

                } while (cursor.MoveToNext());
            }
            return AllSmses;
        }

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

6)متدی که در بخش قبل گفتم تمام اس ام اس ها رو بر میگردونه ، اما تمام اطلاعاتی که گفتم در پروژه اندروید موجوده و من نتونستم اون ها رو به لایه share منتقل کنم اگه شما راهی برای این کار سراغ دارید لطفا به اشتراک بگزارید.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

7)منابع

دسترسی ها

خواندن اس ام اس ها در زامارین اندروید


logo-samandehi