Pass data from Activity to Service using an Intent

GobiasKoffi picture GobiasKoffi · Jul 20, 2010 · Viewed 129.8k times · Source

How do I get data within an Android Service that was passed from an invoking Activity?

Answer

user_CC picture user_CC · Apr 9, 2013

For a precise answer to this question on "How to send data via intent from an Activity to Service", Is that you have to override the onStartCommand() method which is where you receive the intent object:

When you create a Service you should override the onStartCommand() method so if you closely look at the signature below, this is where you receive the intent object which is passed to it:

  public int onStartCommand(Intent intent, int flags, int startId)

So from an activity you will create the intent object to start service and then you place your data inside the intent object for example you want to pass a UserID from Activity to Service:

 Intent serviceIntent = new Intent(YourService.class.getName())
 serviceIntent.putExtra("UserID", "123456");
 context.startService(serviceIntent);

When the service is started its onStartCommand() method will be called so in this method you can retrieve the value (UserID) from the intent object for example

public int onStartCommand (Intent intent, int flags, int startId) {
    String userID = intent.getStringExtra("UserID");
    return START_STICKY;
}

Note: the above answer specifies to get an Intent with getIntent() method which is not correct in context of a service