package com.netease.nim.uikit.session.actions;
import android.app.Activity;
import android.content.Intent;
import com.netease.nim.uikit.session.module.Container;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import java.io.Serializable;
/**
* Action基类。<br>
* 注意:在子类中调用startActivityForResult时,requestCode必须用makeRequestCode封装一遍,否则不能再onActivityResult中收到结果。
* requestCode仅能使用最低8位。
*/
public abstract class BaseAction implements Serializable {
private int iconResId;
private int titleId;
private transient int index;
private transient Container container;
/**
* 构造函数
*
* @param iconResId 图标 res id
* @param titleId 图标标题的string res id
*/
protected BaseAction(int iconResId, int titleId) {
this.iconResId = iconResId;
this.titleId = titleId;
}
public Activity getActivity() {
return container.activity;
}
public String getAccount() {
return container.account;
}
public SessionTypeEnum getSessionType() {
return container.sessionType;
}
public int getIconResId() {
return iconResId;
}
public int getTitleId() {
return titleId;
}
public Container getContainer() {
return container;
}
public abstract void onClick();
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// default: empty
}
protected void sendMessage(IMMessage message) {
container.proxy.sendMessage(message);
}
protected int makeRequestCode(int requestCode) {
if ((requestCode & 0xffffff00) != 0) {
throw new IllegalArgumentException("Can only use lower 8 bits for requestCode");
}
return ((index + 1) << 8) + (requestCode & 0xff);
}
public void setContainer(Container container) {
this.container = container;
}
public void setIndex(int index) {
this.index = index;
}
}