2015-10-30 5 views
0

Я пишу приложение, которое получает 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" /> 

Как решить мою проблему в правильном пути? Буду признателен за вашу помощь!

ответ

4

Ну, похоже, вы ответили на свой вопрос.

«Служба начинается нормально, но OnReceive метод SMMreceiver никогда не вызывается В манифесте я объявил только мое обслуживание следующим образом:.»

вы должны также объявить приемник в манифесте, вы сделали это ?

+0

Я думал, что когда получатель зарегистрирован динамически, мне не нужно объявлять его в манифесте. Я также должен изменить приемник на статический и сделать его общедоступным. – Blady214

Смежные вопросы