0

1) I have an utill class which I call from an Activity by passing the activity context.

2) Using the context I call a Service ( startService() ) from the utill class

3) I try receiving the result (by over-riding onReceiveResult() ) back in the original activity.

Is this approach correct? onReceiveResult() in the activity is not called !! Please advice

Method of Utill Class

public static void openExpenseDetailsScreen(Context context, String type, String entityID)
{

        Intent serviceIntent = new Intent(context,ZExpenseService.class);
        serviceIntent.putExtra("entity",APIConstants.EXPENSE_DETAILS);
        serviceIntent.putExtra("entity_id",entityID);
        serviceIntent.putExtra(StringConstants.fromReportDetails,true);
        context.startService(serviceIntent);
}

Result is set from the Service Class

 resultBundle.putSerializable("expense_details", getExpenseDetails(context,entity_id));

if (receiver != null)
        {
            if (TextUtils.isEmpty(errorMessage))
            {
                receiver.send(STATUS_FINISHED, resultBundle);
            }
            else
            {
                resultBundle.putString("errormessage", errorMessage);
                resultBundle.putInt("errorCode", errorCode);
                receiver.send(STATUS_ERROR, resultBundle);
            }
        }

OnReceiveResult over-rided in the activity

@Override
    public void onReceiveResult(int resultCode, Bundle resultData)
    {
        if(progressDialog.isShowing())
        {
            progressDialog.dismiss();
        }

        switch (resultCode)
        {
            case ZExpenseService.STATUS_FINISHED:
            {
                if (resultData.containsKey("expense_details"))
                {
                    // Handle result
                }
                break;
            }
            case ZExpenseService.STATUS_ERROR:
            {
                // Handle error
                break;
            }

        }
    }
Hariharan Ayyasamy
  • 287
  • 1
  • 2
  • 14

1 Answers1

2

Send your ResultReceiver reference with Intent while starting Service then use same reference to send() check this link

Community
  • 1
  • 1
Godfather
  • 833
  • 9
  • 14