Я пишу приложение, которое получает SMS-сообщение данных, шифрует его содержимое и сохраняет его в базе данных. Чтобы понять это, я создал службу с местным BroadcastReceiver в следующем:BroadcastReceiver на службе не реагирует
public class SMMReceiverService extends Service {
private class SMMreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extras = intent.getExtras();
//call a method from service
}
}
private SMMreceiver smmReceiver;
private IntentFilter intentFilter;
@Override
public void onCreate(){
super.onCreate();
android.os.Debug.waitForDebugger();
smmReceiver = new SMMreceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.DATA_SMS_RECEIVED");
intentFilter.addDataScheme("sms");
intentFilter.addDataAuthority("localhost","8901");
registerReceiver(smmReceiver, intentFilter);
}
}
Сервис начинает нормально, но OnReceive метод SMMreceiver никогда не вызывается. В манифесте я объявил только мое обслуживание следующим образом:
<service
android:name=".Services.SMMReceiverService"
android:enabled="true"
android:exported="true" >
</service>
Есть также все необходимые разрешения:
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
Как решить мою проблему в правильном пути? Буду признателен за вашу помощь!
Я думал, что когда получатель зарегистрирован динамически, мне не нужно объявлять его в манифесте. Я также должен изменить приемник на статический и сделать его общедоступным. – Blady214