victorholo
victorholo

Reputation: 115

BroadcastReceiver doesnt start from service

I need to start a broadcastreceiver from a service and it's not working, i followed some tutorials and everything seems to be right but its not.

Here is my code:

    public class ServiceNotif extends Service{


        smsReceiver receiver;  
            private static final IntentFilter intentFilter = 
                    new IntentFilter("android.provider.Telephony.SMS_RECEIVED");

        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            Log.w("A intrat in service"," ");
            Toast.makeText(getBaseContext(), 
                    "A intrat in service", 
                    Toast.LENGTH_SHORT).show();
             //daca primesc un mesaj se intra in functia asta
receiver = new smsReceiver();
            registerReceiver(receiver, intentFilter);
        }

        @Override
        public void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            unregisterReceiver(receiver);
        }

        @Override
        public IBinder onBind(Intent intent) {
            return mBinder;
        }

        // This is the object that receives interactions from clients.  See
        // RemoteService for a more complete example.
        private final IBinder mBinder = new LocalBinder();

         /**
         * Class for clients to access.  Because we know this service always
         * runs in the same process as its clients, we don't need to deal with
         * IPC.
         */
        public class LocalBinder extends Binder {
            ServiceNotif getService() {
                return ServiceNotif.this;
            }
        }
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.i("LocalService", "Received start id " + startId + ": " + intent);
            // We want this service to continue running until it is explicitly
            // stopped, so return sticky.
            return START_STICKY;
        }

    }

Why isn't the receiver get triggered when i get a message?

EDIT: I also get this in my log:

12-09 08:16:05.708: W/GAV3(1183): Thread[GAThread,5,main]: Service unavailable (code=1), will retry.
12-09 08:16:05.718: I/GAV3(1183): Thread[GAThread,5,main]: No campaign data found.
12-09 08:16:10.779: W/GAV3(1183): Thread[Service Reconnect,5,main]: Service unavailable (code=1), using local store.

Upvotes: 0

Views: 144

Answers (1)

Steve Benett
Steve Benett

Reputation: 12933

Why isn't the receiver get triggered when i get a message?

Because you didn't initialized the Receiver. Init it in onCreate() before registration.

@Override
public void onCreate() {
    super.onCreate();
    Log.w("A intrat in service"," ");
    Toast.makeText(getBaseContext(), 
            "A intrat in service", 
            Toast.LENGTH_SHORT).show();
     //daca primesc un mesaj se intra in functia asta
    receiver = new BroadcastReceiver(); // init the Receiver
    registerReceiver(receiver, intentFilter);
}

Edit:

Be sure you have the right permission in your manifest.

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

Upvotes: 1

Related Questions