Это более или менее продолжение этой проблемы, но немного более сложное: Как отслеживать состояние каждого отправленного SMS?
Я пытаюсь создать файл дампа изкогда SMS-сообщения, которые отправляет мое приложение, либо успешно отправлены, либо доставлены.Я пытался следовать приведенному выше примеру, даже присваивая каждой отправке / доставке свой уникальный идентификатор (например, DELIVER1, DELIVER2 и т. Д.), Но в итоге я ничего не получаю, так как получатели никогда ничего не поднимают.Обратите внимание, что в отличие от большинства смс-приложений, мое предназначено для быстрой отправки смс-сообщений.
Вот фрагмент моего кода:
//Outside a for loop
String sentI = "SMS_SENT";
String delvI = "SMS_DELIVERED";
int z=0;
//inside a for loop
try
{
PendingIntent sentIntent = PendingIntent.getBroadcast(getApplicationContext(),0,new Intent(sentI.concat(Integer.toString(z))),0);
PendingIntent deliveredIntent = PendingIntent.getBroadcast(getApplicationContext(),0,new Intent(delvI.concat(Integer.toString(z))),0);
//Detecting When a Message Has been Successfully Sent
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(getResultCode()==Activity.RESULT_OK)
{
sentDump.add(System.currentTimeMillis());
}
else
{
sndfailDump.add((Long.toString(System.currentTimeMillis())).concat(",").concat("'").concat("Sms Failed to Send.").concat("'\n"));
}
}
}, new IntentFilter(sentI.concat(Integer.toString(z))));
//Detecting When a Message has been successfully delivered
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(getResultCode()==Activity.RESULT_OK)
{
delvDump.add(System.currentTimeMillis());
}
else
{
delvFailDump.add((Long.toString(System.currentTimeMillis())).concat(",").concat("'").concat("Sms failed to deliver.").concat("'\n"));
}
}
}, new IntentFilter(delvI.concat(Integer.toString(z))));
if(apiState==true)
{
sayHello(message[z]);
}
else
{
SmsManager.getDefault().sendTextMessage(phoneNum, null, message[z], sentIntent, deliveredIntent);
}
smsLog.add(System.currentTimeMillis());
msgNoTracker = msgNoTracker + 1;
} catch (Exception e){
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
//Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show();
//crashTrack.add((Long.toString(System.currentTimeMillis())).concat("\n").concat(e.toString())); //original
crashTrack.add((Long.toString(System.currentTimeMillis())).concat(",").concat("'").concat(sw.toString()).concat("'\n"));
//reset all incremental value back one for proper repeat
j=j-1;
continue; //jump back to for loop
}
try{
Thread.sleep(messageDelay);
} catch(InterruptedException e){
e.printStackTrace();
}
z+=1;
цель дампа - просторегистрировать время отправки и доставки, а не управлять тем, была ли успешно отправлена смс или нет ...