我希望在用户接收/发送SMS时获得此信息。为此,我创建了一个SmsWatcher类。
using AeroMobile.Utility.Helper;
using Android.App;
using Android.Content;
using Android.Provider;
[BroadcastReceiver]
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED", "android.intent.action.SENDTO", "android.provider.Telephony.SMS_DELIVER" }, Priority = (int)IntentFilterPriority.HighPriority)]
public class SmsWatcher : BroadcastReceiver
{
public override async void OnReceive(Context context, Intent intent)
{
if (intent.Action != null)
{
if (intent.Action.Equals(Telephony.Sms.Intents.SmsReceivedAction))
{
var msgs = Telephony.Sms.Intents.GetMessagesFromIntent(intent);
foreach (var msg in msgs)
{
//incoming message
}
}
if (intent.Action.Equals(Telephony.Sms.Intents.SmsDeliverAction))
{
var msgs = Telephony.Sms.Intents.GetMessagesFromIntent(intent);
foreach (var msg in msgs)
{
//outgoing message
}
}
}
}
}
然后我在MainActivity中注册此广播服务,如下所示:
//starting SMS watcher service
var smsWatcherIntent = new Intent(ApplicationContext, typeof(SmsWatcher));
SendBroadcast(smsWatcherIntent);
以上代码完全适用于传入消息,但不适用于传出消息。当用户发送SMS时,您能帮我获取信息吗,例如我收到的传入消息的信息?
答案 0 :(得分:1)
根据this answer的灵感
从setup.cfg
中读取传出消息似乎并不容易。因此,读取SMS的最佳方法是通过Cursor从Android数据库中获取。
下面是BroadcastReceiver
的代码段:
Xamarin.Android