package com.alexbbb.uploadservice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; /** * Abstract broadcast receiver from which to inherit when creating a receiver for {@link UploadService}. * * It provides the boilerplate code to properly handle broadcast messages coming from the upload service and dispatch * them to the proper handler method. * * @author alexbbb (Alex Gotev) * @author eliasnaur * */ public abstract class AbstractUploadServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { if (UploadService.getActionBroadcast().equals(intent.getAction())) { final int status = intent.getIntExtra(UploadService.STATUS, 0); final String uploadId = intent.getStringExtra(UploadService.UPLOAD_ID); switch (status) { case UploadService.STATUS_ERROR: final Exception exception = (Exception) intent .getSerializableExtra(UploadService.ERROR_EXCEPTION); onError(uploadId, exception); break; case UploadService.STATUS_COMPLETED: final int responseCode = intent.getIntExtra(UploadService.SERVER_RESPONSE_CODE, 0); final String responseMsg = intent.getStringExtra(UploadService.SERVER_RESPONSE_MESSAGE); onCompleted(uploadId, responseCode, responseMsg); break; case UploadService.STATUS_IN_PROGRESS: final int progress = intent.getIntExtra(UploadService.PROGRESS, 0); onProgress(uploadId, progress); break; default: break; } } } } /** * Register this upload receiver. It's recommended to register the receiver in Activity's onResume method. * * @param context context in which to register this receiver */ public void register(final Context context) { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(UploadService.getActionBroadcast()); context.registerReceiver(this, intentFilter); } /** * Unregister this upload receiver. It's recommended to unregister the receiver in Activity's onPause method. * * @param context context in which to unregister this receiver */ public void unregister(final Context context) { context.unregisterReceiver(this); } /** * Called when the upload progress changes. * * @param uploadId unique ID of the upload request * @param progress value from 0 to 100 */ public abstract void onProgress(final String uploadId, final int progress); /** * Called when an error happens during the upload. * * @param uploadId unique ID of the upload request * @param exception exception that caused the error */ public abstract void onError(final String uploadId, final Exception exception); /** * Called when the upload is completed successfully. * * @param uploadId unique ID of the upload request * @param serverResponseCode status code returned by the server * @param serverResponseMessage string containing the response received from the server */ public abstract void onCompleted(final String uploadId, final int serverResponseCode, final String serverResponseMessage); }