Ок, попробую
UPD:
1. Регистрирую BroadcastReceiver в активити
2. В onPause() отменяю в том же активити
3. В классе асинхронном, в onPreExecute() создаю intent
Как-то так? Все равно что-то не то...
UPD2: Вроде додумался, на эмуляторе работает. Принцип:
1. В главном активити:
protected void onResume() {
super.onResume();
registerReceiver(sentReceiver, new IntentFilter(SENT_SMS_FLAG));
registerReceiver(deliverReceiver, new IntentFilter(DELIVER_SMS_FLAG));
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(sentReceiver);
unregisterReceiver(deliverReceiver);
}
BroadcastReceiver sentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent in) {
switch (getResultCode()) {
case Activity.RESULT_OK:
// sent SMS message successfully;
Toast toast = Toast.makeText(getApplicationContext(),
"Сообщение отправлено!", Toast.LENGTH_SHORT);
toast.show();
break;
default:
// sent SMS message failed
break;
}
}
};
BroadcastReceiver deliverReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent in) {
// SMS delivered actions
switch (getResultCode()) {
case Activity.RESULT_OK:
// sent SMS message successfully;
Toast toast = Toast.makeText(getApplicationContext(),
"Сообщение доставлено!", Toast.LENGTH_SHORT);
toast.show();
break;
default:
// sent SMS message failed
break;
}
}
};
Intent sentIn = new Intent(SENT_SMS_FLAG);
Intent deliverIn = new Intent(SENT_SMS_FLAG);
2. В асинхронном классе:
private String send(String number) throws InterruptedException {
TimeUnit.SECONDS.sleep(1);
final PendingIntent deliverPIn = PendingIntent.getBroadcast(getApplicationContext(), 0, deliverIn, 0);
final PendingIntent sentPIn = PendingIntent.getBroadcast(getApplicationContext(), 0,sentIn, 0);
smsManager.sendTextMessage(number, null, "text", sentPIn, deliverPIn);
return "ok";
}
Send() вызывается в protected Void doInBackground(String... urls)
Единственное, за что сомневаюсь - это PendingIntent в ф-ии, которая вызывается из doInBackground.
Как бы там не перемешалось всё это поточное дело?
Еще не понятно как обрабатывать от какого потока пришёл BroadcastReceiver?