我想開發一個SMS應用程序,它將一次發送多個SMS。我想爲短信設置一個ID。在SMS SENT報告中,我想獲取此ID。所以,我會知道一個特定的消息已經發送。如何將代碼傳遞給廣播接收器,同時接收器短消息在android中發送報告
我已經添加了廣播接收器。我也收到SMS SENT報告。
例如:我發送了10條短信,並收到了8條SMS SENT報告。我怎麼知道哪2條消息沒有發送,以便我可以重新發送?
我想開發一個SMS應用程序,它將一次發送多個SMS。我想爲短信設置一個ID。在SMS SENT報告中,我想獲取此ID。所以,我會知道一個特定的消息已經發送。如何將代碼傳遞給廣播接收器,同時接收器短消息在android中發送報告
我已經添加了廣播接收器。我也收到SMS SENT報告。
例如:我發送了10條短信,並收到了8條SMS SENT報告。我怎麼知道哪2條消息沒有發送,以便我可以重新發送?
對於您發送的每個SMS(或部分SMS),您都提供PendingIntent。在那個PendingIntent中,你已經放置了一個Intent,當SMS(或者部分)被成功發送或者沒有發送時,你將會收到這個Intent。在這個意圖中,你可以使用額外的額外信息。因此,例如,發送消息時,代碼可能是這樣的......
String receiverCodeForThisMessage = "STRING_CODE_FOR_MY_SMS_OUTCOME_RECEIVER";
int uniqueCodeForThisPartOfThisSMS = 100*numberSMSsentSoFar+PartNumberOfThisSMSpart;
Intent intent = new Intent(receiverCodeForThisMessage);
intent.putExtra("TagIdentifyIngPieceOfInformationOne", piece1);
intent.putExtra("TagIdentifyIngPieceOfInformationTwo", piece2);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueCodeForThisPartOfThisSMS, intent, 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage("phonenumber", "Fred Bloggs", "Hello!", pendingIntent, null);
但在此之前,你已經註冊了一個接收器將得到的結果和你設置的意圖;從那意圖你提取的信息:
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// Get information about this message
int piece1 = intent.getIntExtra("TagIdentifyIngPieceOfInformationOne", -1);
int piece2 = intent.getIntExtra("TagIdentifyIngPieceOfInformationTwo", -1);
if (getResultCode() == Activity.RESULT_OK) {
// success code
}
else {
// failure code
}
}, new IntentFilter(receiverCodeForThisMessage));
謝謝你尼爾,我在發佈報告中得到了id,但我有3個問題。 (1)當我在onReceive()方法中檢查intent時,它爲所有消息提供相同的id。 (2)當我通過給定的鍵得到id時,它返回-1。 (3)onReceiver調用兩次 –
按相反的順序...(3) - 如果發送兩條SMS消息或兩條消息,我期望onReceiver被調用兩次。 (2)您是否檢查過鑰匙是否正確?容易誤打字。 (1)這可能是因爲它實際上只產生一個掛起的意圖(長篇故事),但如果創建掛起的意向行中的第一個「0」是您發送的每個短消息(部分)唯一的整數,您可能會發現它會更好地工作。 –
那麼你的想法看起來不錯。你有沒有嘗試添加ID? – keyser