package ezy.sdk3rd.social.platforms.send;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import java.util.List;
import ezy.sdk3rd.social.sdk.OnCallback;
import ezy.sdk3rd.social.sdk.Platform;
import ezy.sdk3rd.social.sdk.ResultCode;
import ezy.sdk3rd.social.share.IShareable;
import ezy.sdk3rd.social.share.ShareData;
import ezy.sdk3rd.social.share.ShareTo;
import ezy.sdk3rd.social.share.image.resource.BitmapResource;
import ezy.sdk3rd.social.share.image.resource.FileResource;
import ezy.sdk3rd.social.share.image.resource.ImageResource;
import ezy.sdk3rd.social.share.media.IMediaObject;
import ezy.sdk3rd.social.share.media.MoImage;
/**
* Created by ezy on 17/3/18.
*/
public class SendShare implements IShareable {
public static final String TAG = "ezy.sdk3rd.qq.share";
static final String PACKAGE_QQ = "com.tencent.mobileqq";
static final String PACKAGE_WX = "com.tencent.mm";
Activity mActivity;
Platform mPlatform;
SendShare(Activity activity, Platform platform) {
mActivity = activity;
mPlatform = platform;
}
@Override
public void share(@NonNull final ShareData data, @NonNull final OnCallback<String> callback) {
if (mPlatform.getName().equals(ShareTo.ToQQ)) {
if (!isApplicationInstalled(mActivity, PACKAGE_QQ)) {
callback.onFailed(mActivity, ResultCode.RESULT_FAILED, "无法分享,请先安装QQ");
return;
}
} else {
if (!isApplicationInstalled(mActivity, PACKAGE_WX)) {
callback.onFailed(mActivity, ResultCode.RESULT_FAILED, "无法分享,请先安装微信");
return;
}
}
Intent intent = new Intent(Intent.ACTION_SEND);
if (mPlatform.getName().equals(ShareTo.ToQQ)) {
intent.setClassName(PACKAGE_QQ, "com.tencent.mobileqq.activity.JumpActivity");
} else if (mPlatform.getName().equals(ShareTo.ToWXSession)) {
intent.setClassName(PACKAGE_WX, "com.tencent.mm.ui.tools.ShareImgUI");
} else {
intent.setClassName(PACKAGE_WX, "com.tencent.mm.ui.tools.ShareToTimeLineUI");
}
switch (data.type()) {
case IMediaObject.TYPE_IMAGE:
intent.setType("image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION);
ImageResource resource = ((MoImage) data.media).resource;
if (resource instanceof BitmapResource) {
final Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(mActivity.getContentResolver(), resource.toBitmap(), null, null));
intent.putExtra(Intent.EXTRA_STREAM, uri);
} else if (resource instanceof FileResource) {
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(((FileResource) resource).file));
} else {
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(resource.toUri()));
}
break;
case IMediaObject.TYPE_TEXT:
intent.setType("text/plain");
intent.putExtra("Kdescription", data.text);
intent.putExtra(Intent.EXTRA_TEXT, data.text);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
break;
default:
callback.onFailed(mActivity, ResultCode.RESULT_FAILED, "不支持的分享类型");
return;
}
if (isIntentAvailable(mActivity, intent)) {
mActivity.startActivity(intent);
} else {
callback.onFailed(mActivity, ResultCode.RESULT_FAILED, "分享失败");
return;
}
}
boolean isIntentAvailable(Context context, Intent intent) {
PackageManager pm = context.getPackageManager();
List list = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
boolean isApplicationInstalled(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
List<PackageInfo> list = packageManager.getInstalledPackages(0);
for (int i = 0; i < list.size(); i++) {
if (list.get(i).packageName.equalsIgnoreCase(packageName)) {
return true;
}
}
return false;
}
@Override
public void onResult(int requestCode, int resultCode, Intent data) {
}
}