0

I am writing an app which receives SMS data message, encrypt its content and save it to database. To realize it I've created a service with a local BroadcastReceiver as follow:

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);


     }
}

Service is starting normally but onReceive method of SMMreceiver is never called. In manifest I've declared only my service as follow:

    <service
        android:name=".Services.SMMReceiverService"
        android:enabled="true"
        android:exported="true" >
    </service>

There are also all required permissions:

<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />

How to solve my problem in correct way? I will be grateful for your help!

Blady214
  • 729
  • 6
  • 19

1 Answers1

4

Well, it seems like you kind of answered your own question.

"Service is starting normally but onReceive method of SMMreceiver is never called. In manifest I've declared only my service as follow:"

you have to also declare your receiver in your manifest, did you do that?

JozeRi
  • 3,219
  • 6
  • 27
  • 45
  • I thought that when receiver is registered dynamically I don't have to declare it in manifest. I have also to change receiver to static and make it public. – Blady214 Oct 31 '15 at 11:38