package ezy.sdk3rd.social;
import android.app.Activity;
import android.content.Intent;
import ezy.sdk3rd.social.sdk.DefaultCallback;
import ezy.sdk3rd.social.sdk.IFactory;
import ezy.sdk3rd.social.sdk.OnCallback;
import ezy.sdk3rd.social.sdk.OnSucceed;
import ezy.sdk3rd.social.sdk.ResultCode;
import ezy.sdk3rd.social.sdk.Sdk;
import ezy.sdk3rd.social.share.IShareable;
import ezy.sdk3rd.social.share.ShareData;
import ezy.sdk3rd.social.share.image.resource.ImageResource;
import ezy.sdk3rd.social.share.media.IMediaObject;
import ezy.sdk3rd.social.share.media.MoImage;
public class ShareSDK {
static Sdk<IShareable> sdk = new Sdk<>();
public static void setDefaultCallback(OnCallback callback) {
sdk.setDefaultCallback(callback);
}
public static <T extends IShareable> void register(String name, String appId, Class<T> clazz) {
sdk.register(name, appId, clazz);
}
public static <T extends IShareable> void register(IFactory<T> factory) {
sdk.register(factory);
}
private ShareData mData = new ShareData();
private Activity mActivity;
private ShareSDK(Activity activity, String text, IMediaObject media) {
mActivity = activity;
mData.text = text;
mData.media = media;
}
// 文本
public static ShareSDK make(Activity activity, String text) {
return new ShareSDK(activity, text, null);
}
// 图片
public static ShareSDK make(Activity activity, ImageResource image) {
return new ShareSDK(activity, null, new MoImage(image));
}
// 图片、音乐、视频、文件
public static ShareSDK make(Activity activity, IMediaObject media) {
return new ShareSDK(activity, null, media);
}
public static ShareSDK make(Activity activity, String text, IMediaObject media) {
return new ShareSDK(activity, text, media);
}
public ShareSDK withUrl(String value) {
mData.url = value;
return this;
}
public ShareSDK withTitle(String value) {
mData.title = value;
return this;
}
public ShareSDK withDescription(String value) {
mData.description = value;
return this;
}
public ShareSDK withThumb(ImageResource thumb) {
mData.thumb = thumb;
return this;
}
public void share(String platform) {
share(platform, new DefaultCallback(sdk.getDefaultCallback(), null));
}
public void share(String platform, OnSucceed<String> listener) {
share(platform, new DefaultCallback(sdk.getDefaultCallback(), listener));
}
public void share(String platform, OnCallback<String> callback) {
if (!sdk.isSupport(platform)) {
callback.onFailed(mActivity, ResultCode.RESULT_FAILED, "不支持的平台[" + platform + "]");
return;
}
IShareable api = sdk.get(mActivity, platform);
if (api == null) {
return;
}
api.share(mData, callback);
}
public static void onHandleResult(Activity activity, int requestCode, int resultCode, Intent data) {
sdk.onHandleResult(activity, requestCode, resultCode, data);
}
}