All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.leancloud.im.LCIMBaseBroadcastReceiver Maven / Gradle / Ivy

package cn.leancloud.im;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import java.util.HashMap;
import java.util.Map;

import cn.leancloud.LCException;
import cn.leancloud.LeanCloud;
import cn.leancloud.callback.LCCallback;
import cn.leancloud.im.v2.Conversation;
import cn.leancloud.utils.LocalBroadcastManager;

/**
 * Created by fengjunwen on 2018/8/7.
 */

public abstract class LCIMBaseBroadcastReceiver extends BroadcastReceiver {
  LCCallback callback;

  public LCIMBaseBroadcastReceiver(LCCallback callback) {
    this.callback = callback;
  }

  @Override
  public void onReceive(Context context, Intent intent) {
    try {
      Throwable error = null;
      if (null != intent && null != intent.getExtras() && intent.getExtras().containsKey(Conversation.callbackExceptionKey)) {
        error = (Throwable) intent.getExtras().getSerializable(Conversation.callbackExceptionKey);
      }
      HashMap result = (HashMap) intent.getSerializableExtra(IntentUtil.CALLBACK_RESULT_KEY);
      execute(result, error);
      if (LeanCloud.getContext() != null) {
        LocalBroadcastManager.getInstance(LeanCloud.getContext()).unregisterReceiver(this);
      }
    } catch (Exception e) {
      if (callback != null) {
        callback.internalDone(null, new LCException(e));
      }
    }
  }

  public abstract void execute(Map result, Throwable error);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy