【问题标题】:Xamarin Forms android Receiving incoming text message using broadcast receiverXamarin Forms android使用广播接收器接收传入的文本消息
【发布时间】:2017-08-09 15:33:34
【问题描述】:

使用 xamarin 表单我正在尝试读取传入消息并使用广播接收器类显示 toast 消息。

以下是我的 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");
                }
            }
        }
    }
} 

但上面的代码既不显示日志猫中的信息日志消息,也不显示吐司文本。 谁能帮帮我

【问题讨论】:

    标签: android broadcastreceiver xamarin.forms


    【解决方案1】:

    要在 Xamarin 表单应用程序中显示 toast,您需要一个插件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多