سلام در رابطه با ارسال اس ام اس در زامارین فرمز یک کلاس وجود داشت ، اما چطور میشه اس ام اس هایی که به گوشی فرستاده میشه رو دریافت کرد و خواند؟
سلام
من تجربه ای در این مورد ندارم و فکر هم نکنم سیستم عامل اجازه بده
سرچ کنید به نتیجه میرسید
زامارین اندروید چطور؟ توی زامارین اندروید این قابلیت وجود داره؟
قبلا ها میشد ولی در سیستم جدید اندروید این اجازه رو نمیده
البته مطمئن نیستم ، تحقیق کنم
سلام دوستان من تحقیق کردم و راهش رو پیدا کردم باهاتون به اشتراک میزارم
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)منابع