Xamarin Forms android การรับข้อความขาเข้าโดยใช้เครื่องรับการออกอากาศ

การใช้แบบฟอร์ม xamarin ฉันกำลังพยายามอ่านข้อความขาเข้าและแสดงข้อความขนมปังปิ้งโดยใช้คลาสเครื่องรับการออกอากาศ

ต่อไปนี้เป็น manifest.xml ของฉัน

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"       android:installLocation="auto">
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<application android:label="DemoApp" android:debuggable="true">
</application>
</manifest>

คลาสผู้รับ

[BroadcastReceiver(Enabled = true, Exported = true,Label = "SMS Receiver")]
[IntentFilter(new string[] { "android.provider.Telephony.SMS_RECEIVED"}, Priority = Int32.MaxValue)]
public class SmsReceiver : Android.Content.BroadcastReceiver
{
    public static readonly string INTENT_ACTION = "android.provider.Telephony.SMS_RECEIVED";

    public SmsReceiver()
    {
    }

    public override void OnReceive(Context context, Intent intent)
    {
        if (intent.Action == INTENT_ACTION)
        {
            if (ContextCompat.CheckSelfPermission(context,
                "android.permission.READ_SMS") != Permission.Denied)
            {
                Bundle bundle = intent.Extras;

                if (bundle != null)
                {
                    Java.Lang.Object[] pdus = (Java.Lang.Object[])bundle.Get("pdus");

                    if (pdus.Length == 0)
                    {
                        return;
                    }

                    SmsMessage[] msgs;
                    msgs = new SmsMessage[pdus.Length];

                    for (int i = 0; i < msgs.Length; i++)
                    {
                        msgs[i] = SmsMessage.CreateFromPdu((byte[])pdus[i], "3gpp");

                        Log.Info("SmsReceiver", "SMS Received from: " + msgs[i].OriginatingAddress);
                        Log.Info("SmsReceiver", "SMS Data: " + msgs[i].MessageBody.ToString());
                    }

                    Toast.MakeText(context.ApplicationContext, "SUCCESS",
                    ToastLength.Long).Show();

                    Log.Info("SmsReceiver", "SMS Received");
                }
            }
        }
    }
} 

แต่โค้ดด้านบนไม่แสดงข้อความบันทึกข้อมูลใน log cat หรือข้อความขนมปังปิ้ง ใครก็ได้โปรดช่วยฉันด้วย


person Srikar    schedule 27.11.2016    source แหล่งที่มา


คำตอบ (1)


หากต้องการแสดงขนมปังปิ้งในแอปพลิเคชันแบบฟอร์ม Xamarin คุณต้องมีปลั๊กอิน

https://github.com/EgorBo/Toasts.Forms.Plugin

person arman radan    schedule 09.08.2017