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

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

package cn.leancloud.im;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

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

import cn.leancloud.AVException;
import cn.leancloud.AVOSCloud;
import cn.leancloud.callback.AVCallback;
import cn.leancloud.im.v2.Conversation;

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

public abstract class AVIMBaseBroadcastReceiver extends BroadcastReceiver {
  AVCallback callback;

  public AVIMBaseBroadcastReceiver(AVCallback 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 (AVOSCloud.getContext() != null) {
        LocalBroadcastManager.getInstance(AVOSCloud.getContext()).unregisterReceiver(this);
      }
    } catch (Exception e) {
      if (callback != null) {
        callback.internalDone(null, new AVException(e));
      }
    }
  }

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy