Это мой файл службы:BroadcastReceiver в службе не работает
public class SMSCounterService extends Service {
/** Called when the activity is first created. */
@Override
public void onCreate() {
Log.d(LOG_TAG, "SMSCounterService: Constructor");
super.onCreate();
dbActivities = new DBActivities(this);
dbActivities.open(); // Create or open the existing DB if already created
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_SENT");
registerReceiver(receiver, filter);
}
@Override
public void onDestroy() {
unregisterReceiver(receiver);
dbActivities.close();
super.onDestroy();
}
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.provider.Telephony.SMS_SENT")) {
smsCount++;
Log.d(LOG_TAG, "SMSCounterService: smsCount=" +smsCount);
long dbInsertReturn = dbActivities.insertIntoDB(smsCount);
}
}
};
Я могу видеть журнал «SMSCounterService: Constructor». Поэтому вызывается метод onCreate(). Но когда я отправляю SMS-сообщение, BroadcastReceiver не может его идентифицировать.
Правильные ли разрешения, установленные в вашем манифесте? Я думаю, что это разрешение RECEIVE_SMS http://developer.android.com/reference/android/Manifest.permission.html –
что заставляет вас думать, что есть какие-либо намерения при отправке смс? И почему вы считаете, что цель - «android.provider.Telephony.SMS_SENT»? Я думаю, что ваш приемник в порядке. Сделайте простое приложение только с одной кнопкой, и при нажатии этой кнопки просто отправьте намерение android.provider.Telephony.SMS_SENT и посмотрите, может ли ваш приемник хорошо его поймать. Если это так, то я был прав, и нет никакого такого намерения, когда будет отправлено SMS. –
Что @ alex.veprik написал полностью правильно - afaik, там нет трансляции SMS_SENT, только SMS_RECEIVED. – Jens