Reputation: 115
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
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