1
활동 인 앱과 매니페스트에 등록한 브로드 캐스트 수신기가 있는데 어느 시점에서 활동이 파괴되었습니다.SmsManager.Default.SendTextMessage가 너무 많은 sms-xamarin을 보냅니다.
브로드 캐스트 수신기의 기능은 들어오는 SMS를 수신하고 발신자가 활동 (사용자가 활동에서 지정한 번호)과 동일한 경우 빈 번호를 해당 번호로 보냅니다 (두 번호는 동일 함).). 안드로이드 2.3으로 컴파일했지만 2 가지 문제가 있습니다.
1 - 응용 프로그램이 하나의 메시지를받은 후 해당 번호로 너무 많은 메시지를 보냅니다.
2 - abortbroadcast()가 작동하지 않습니다. 이 내 방송 수신기 :
namespace SmsBroadcastReceiver
{
[BroadcastReceiver]
[IntentFilter(new string[] { "android.provider.Telephony.SMS_RECEIVED" }, Priority = Int32.MaxValue)]
public class SmsReceiver : BroadcastReceiver
{
public override void OnReceive (Context context, Intent intent)
{
ISharedPreferences pref = PreferenceManager.GetDefaultSharedPreferences (context);
string number = pref.GetString ("Number", "0");
Bundle b= intent.Extras;
var pdus = b.Get("pdus");
var castedPdus = JNIEnv.GetArray<Java.Lang.Object>(pdus.Handle);
var bytes = new byte[JNIEnv.GetArrayLength(castedPdus[0].Handle)];
JNIEnv.CopyArray(castedPdus[0].Handle, bytes);
SmsMessage msg= SmsMessage.CreateFromPdu (bytes);
if (msg.OriginatingAddress == number) {
//send empty sms
SmsManager.Default.SendTextMessage (msg.OriginatingAddress, null, "Empty", null, null);
InvokeAbortBroadcast();
}
}
}
}