QQApi.java 3.32 KB
package com.polysoft.nafmii.wechat;

import android.app.Activity;
import android.app.Application;
import android.graphics.Bitmap;
import android.os.Bundle;

import com.polysoft.nafmii.utils.CtxUtils;
import com.polysoft.nafmii.webview.JsInterfaceHandler;
import com.tencent.connect.share.QQShare;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.activity.MainActivity;

public class QQApi {

    private static QQApi INSTANCE = null;
    private final Tencent mTencent;

    public static synchronized QQApi getInstance() {
        if (null == INSTANCE) {
            // Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
            // 其中APP_ID是分配给第三方应用的appid,类型为String。
            // 其中Authorities为 Manifest文件中注册FileProvider时设置的authorities属性值
            Application app = CtxUtils.getApplication();
            String Authorities = String.format("%s.fileprovider", app.getPackageName());
            Tencent tencent = Tencent.createInstance(BuildConfig.QQ_APPID, app, Authorities);

            INSTANCE = new QQApi(tencent);
        }
        return INSTANCE;
    }

    private QQApi(Tencent tencent) {
        this.mTencent = tencent;
    }

    public Tencent getTencent() {
        return this.mTencent;
    }

    public void share(Activity activity, ShareBean bean, IUiListener listener) {
        String shareType = bean.getShareType();
        Bundle params = null;
        if ("0".equals(shareType)) { // 分享文字
        } else if ("1".equals(shareType)) { // 分享图片
        } else if ("3".equals(shareType)) { // 分享url地址
            params = this.shareUrl(bean);
        }
        if (null != params) {
            mTencent.shareToQQ(activity, params, listener);
        }
    }

    public Bundle shareUrl(ShareBean bean) {
        final Bundle params = new Bundle();
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
        params.putString(QQShare.SHARE_TO_QQ_TITLE, bean.getTitle());
        params.putString(QQShare.SHARE_TO_QQ_SUMMARY, bean.getContent());
        params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, bean.getWebUrl());
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, bean.getWebImg());
        params.putString(QQShare.SHARE_TO_QQ_APP_NAME, CtxUtils.getAppName());
//        params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能");
        return params;
    }

    public static class JSShareCallback implements IUiListener {
        private final JsInterfaceHandler.JsInterface jsInterface;
        public JSShareCallback(JsInterfaceHandler.JsInterface jsInterface) {
            this.jsInterface = jsInterface;
        }

        @Override
        public void onComplete(Object o) {
            jsInterface.callJs(WechatResult.shareSuccess());
        }

        @Override
        public void onError(UiError uiError) {
            jsInterface.callJs(WechatResult.fail("分享失败"));
        }

        @Override
        public void onCancel() {
            jsInterface.callJs(WechatResult.cancel());
        }

        @Override
        public void onWarning(int i) {
            jsInterface.callJs(WechatResult.fail("分享失败"));
        }
    }
}