1分ごとに1つの受信者に複数のSMSメッセージを送信するAppの作成中です。これらのメッセージには、オブジェクトにアタッチされた追跡システムの一部としてのGPS座標が含まれています。同じ受信者に複数のSMSを送信できる送信トレイを作成するにはどうすればよいですか?
オブジェクトが信号の内外を移動するため、メッセージが送信される場合と送信されない場合があります。私はこれらのメッセージを保存し、後でそれらを送信したいと思います。これは、オブジェクトが次の信号であるときにたくさんのSMSメッセージを送信する必要があることを意味します。しかしながら。私は記憶されたメッセージを送信しようとすると問題に遭う。 SMSメッセージがBroadcastReceiverに属しているものを特定する方法はありますか?これを知っていると、送信されなかったメッセージを(後で送信するために)保存することができ、同時に送信済みのメッセージはすべて削除されます。
IEオブジェクトは信号を伝搬しません。 1分ごとにGPS座標が取得されます。メッセージは送信されないので、ベクトルに格納されます。 5分後に、オブジェクトは5つのメッセージを送信して信号に戻ります。これらの5つのメッセージの送信中にオブジェクトが信号を失うと、3つのメッセージ(特定の順序なし)を送信することができます。
一部のコードは次のとおりです。
public class FixingmsgsActivity extends Activity {
private static final int MAX_SMS_MESSAGE_LENGTH = 160;
private static final String SMS_DELIVERED = "SMS_DELIVERED";
private static final String SMS_SENT = "SMS_SENT";
private String SendTo = "02102980174";
private String SendToFull = "+642102980174";
private Vector<String> testmsg = new Vector<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerReceiver(sendreceiver, new IntentFilter(SMS_SENT));
registerReceiver(deliveredreceiver, new IntentFilter(SMS_DELIVERED));
// registerReceiver(smsreceiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
testmsg.addElement("one");
testmsg.addElement("two");
testmsg.addElement("three");
testmsg.addElement("four");
testmsg.addElement("five");
testmsg.addElement("six");
testmsg.addElement("seven");
testmsg.addElement("eight");
testmsg.addElement("nine");
for(int i=0;i < testmsg.size();i++){
sendSms(SendTo,testmsg.elementAt(i));
}
}
private void sendSms(String phonenumber,String message){
SmsManager manager = SmsManager.getDefault();
Intent sendIntent = new Intent("SMS_SENT");
sendIntent.putExtra("message", message);
PendingIntent piSend = PendingIntent.getBroadcast(this, 0, sendIntent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent piDelivered = PendingIntent.getBroadcast(this, 0, new Intent(SMS_DELIVERED), 0);
int length = message.length();
if(length > MAX_SMS_MESSAGE_LENGTH)
{
ArrayList<String> messagelist = manager.divideMessage(message);
manager.sendMultipartTextMessage(phonenumber, null, messagelist, null, null);
}
else
{
//Toast.makeText(getBaseContext(), message, Toast.LENGTH_SHORT).show();
manager.sendTextMessage(phonenumber, null, message, piSend, piDelivered);
}
}
private BroadcastReceiver sendreceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
switch(getResultCode())
{
case Activity.RESULT_OK: //Message has been sent
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE: //message not sent. Which one? I would like to store this SMS so I can send it later.
break;
case SmsManager.RESULT_ERROR_NO_SERVICE: //message not sent. Which one?
break;
case SmsManager.RESULT_ERROR_NULL_PDU: //message not sent. Which one?
break;
case SmsManager.RESULT_ERROR_RADIO_OFF: //message not sent. Which one?
break;
}
}
};
private BroadcastReceiver deliveredreceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String info = "Delivery information: ";
switch(getResultCode())
{
case Activity.RESULT_OK: info += "delivered";
break;
case Activity.RESULT_CANCELED: info += "not delivered";
break;
}
}
};
}
しかし私は、これが唯一のbroadcastreceiverに余分な最後のSMSを与えるputExtraとインテントを使用して試してみました。たとえば上記のコードでは、onrecieveメソッドの余分な "メッセージ"は "nine" "nine" "nine" "nine" "nine" "nine" "nine" "nine" "nine"を出力します。
I私はこれは私が送信され、どのような1が長い読み取りのための
申し訳ありませんでしたいませんでした何のメッセージを識別することができwiould「1」「2」など
ようなものにしたい複数のメッセージを送ります。ありがとう ダニエルH