Android:如何获取新发送的短信数据,但不使用URI



我想获取发送的短信数据,但只有从设备发送的一条短信。使用URI,我可以获取所有SMS数据,但我不想一次又一次地获取所有SMS数据。 我能够获取新收到的短信数据并用BroadcastReciever敬酒,但我不知道如何获取新发送的短信数据并干杯。 这是我获取收到的短信数据的代码:

public class incomingSms extends BroadcastReceiver
{
final SmsManager sms = SmsManager.getDefault();
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();

try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String message = currentMessage.getDisplayMessageBody();
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
Date date = new Date(currentMessage.getTimestampMillis());
String formattedDate = new SimpleDateFormat("MM/dd/yyyy").format(date);
long time=date.getTime();
String formattedTime = new SimpleDateFormat("hh:mm:ss").format(time);
Toast.makeText(context,"recieved sms "+"senderNum: "+ phoneNumber + ", message: " + message+ " , date:" + formattedDate + ",time: "+formattedTime , Toast.LENGTH_LONG).show();

MyDBHandler db = new MyDBHandler(context);
int f_id=1;
db.insertDat2(new DataSetGet(f_id,phoneNumber,message,formattedDate,formattedTime));
//                    addData(phoneNumber,message,formattedDate,formattedTime);
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}

SmsMessage[] msgs = null;

if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
String no = "SMS from " + msgs[i].getOriginatingAddress() + " : ";
String message= msgs[i].getMessageBody().toString();
Toast.makeText(context,"sent message "+"no: "+no+" message: "+ message,Toast.LENGTH_LONG).show();
}
}

}

没有关于发送的 SMS 消息的标准广播。

最新更新