編輯:關於Android編程
android發送短信截獲上一條發送是否成功,然後再來發送下一條短信
1.問題:在項目中遇到如下要求:待發短信有N條,實現一條一條的發送並在上一條短信發送成功之後再來發送下一條。
for(int i=0;i<3;i++){
sendSMS(10086, text1, i);
}
private void sendSMS(String toAddress, String body, Long id) {
// ---sends an SMS message to another device---
SmsManager sms = SmsManager.getDefault();
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
// create the sentIntent parameter
Intent sentIntent = new Intent(SENT_SMS_ACTION);
sentIntent.putExtra("id", id);
PendingIntent sentPI = PendingIntent.getBroadcast(
ListOutgoingActivity.this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//你同時發送很多信息的話,會產生很多一樣的PendingIntent,然後Android操作系統會把pendingIntent的數據更新到最新,所以toast的ID是最新的數據,以前的數據會被覆蓋掉。這個可以用來同步數據。
// 如果短信內容超過70個字符 將這條短信拆成多條短信發送出去
if (body.length() > 70) {
ArrayList
for (String msg : msgs) {
sms.sendTextMessage(toAddress, null, msg, sentPI,
null);
}
} else {
System.out.println("body====" + body);
sms.sendTextMessage(toAddress, null, body, sentPI, null);
}
BroadcastReceiver sendMessage = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 判斷短信是否發送成功
switch (getResultCode()) {
case Activity.RESULT_OK:
Long id = intent.getLongExtra("id", -12);
//截取每次發送短信的ID,但是toast的id都是2???,正常情況下應該分別是0,1,2
Toast.makeText(ListOutgoingActivity.this,
id +"發送成功", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(ListOutgoingActivity.this,
"發送失敗", Toast.LENGTH_LONG).show();
break;
}
}
};
registerReceiver(sendMessage, new IntentFilter(
SENT_SMS_ACTION));}
2.解決辦法:現在的解決方法是,收到上一條信息發送成功或者失敗後,在發送下一條數據
int i=0;
sendSMS(10086,test, i) ;
private void sendSMS(String toAddress, String body, Long id) {
// ---sends an SMS message to another device---
SmsManager sms = SmsManager.getDefault();
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
// create the sentIntent parameter
Intent sentIntent = new Intent(SENT_SMS_ACTION);
sentIntent.putExtra("id", id);
PendingIntent sentPI = PendingIntent.getBroadcast(
ListOutgoingActivity.this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
// 如果短信內容超過70個字符 將這條短信拆成多條短信發送出去
if (body.length() > 70) {
ArrayList
for (String msg : msgs) {
sms.sendTextMessage(toAddress, null, msg, sentPI,
null);
}
} else {
System.out.println("body====" + body);
sms.sendTextMessage(toAddress, null, body, sentPI, null);
}
BroadcastReceiver sendMessage = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 判斷短信是否發送成功
switch (getResultCode()) {
case Activity.RESULT_OK:
Long id = intent.getLongExtra("id", -12);
Toast.makeText(ListOutgoingActivity.this,id +"發送成功", Toast.LENGTH_SHORT).show();
i++;
if(i<3){
sendSMS(10086,test,i)
}
break;
default:
Toast.makeText(ListOutgoingActivity.this,
"發送失敗", Toast.LENGTH_LONG).show();
break;
}
}
};
registerReceiver(sendMessage, new IntentFilter(
SENT_SMS_ACTION));}
玩微信的人都知道,微信無法直接使用QQ號登錄,想要使用QQ號登錄微信就需要先注冊,那麼我們如何使用qq號注冊微信帳號呢?本文就為大家詳細介紹使用申請微信賬號
最近項目實現下面的圖示的效果,本來想用listview+gridview實現,但是貌似挺麻煩的於是就用flowlayout 來addview實現添加伸縮的效果,實現也比較
1、一個應用通過ContentObserver來觀察自己所監聽的數據(某個特定的URI)是否發生了變化2、ContentObserver放在Activity中。Coten
現在物聯網搞的轟轟烈烈的,小米的手環等一系列產品,下面我們就來研究一下小米手環的記步功能 工具類package com.zsl.bluetoothdemo.ble;im