ShareSDKUtils,封装的分享工具类

本文介绍了一个基于ShareSDK的工具类ShareSDKUtils,用于简化应用程序中的分享操作。支持默认和自定义GUI,并覆盖多种分享场景,如微信、QQ、微博等。

介绍

ShareSDKUtils是基于ShareSDK提供的API进行封装的工具类,方便于我们开发时分享的调用,支持使用默认的GUI,也支持自定义界面,点击事件中调用分享到某一个ShareSDK支持的第三方平台,使用ShareSDKUtils需要依赖ShareSDK提供的开发包。

使用的方式为:如ShareSDKUtils.getInstance(Context context).useDefaultGUI(需要传入的那些参数);

Mob相关文档介绍,提供参考

分享到指定平台

不同平台分享内容的详细说明

接下来介绍ShareSDKUtils封装的方法:

 
/**


* @description: 分享的工具类
*/

public class ShareSDKUtils {

private static Handler mHandler = new Handler();

private static ShareSDKUtils mInstance;

private static Object mLock = new Object();

private static Context mContext;

public static ShareSDKUtils getInstance(Context context){

if (mInstance == null){

synchronized (mLock){

if (mInstance == null){

mInstance = new ShareSDKUtils();

mContext = context;
    }
  }
}
return mInstance;
}

使用默认的GUI分享

App中分享按钮点击事件中,调用此方法可以弹出ShareSDK自带的默认分享的弹框,包括你选择的那些第三方平台,最后一个参数是平台分享后操作的回调,有分享成功、分享失败、取消分享三个操作的回调,如果不需要监听分享动作的回调,可以传null,默认对应的操作会弹出吐司"分享成功","分享失败","分享已取消"的提示。

/**
 * 使用默认的分享GUI
 *
 * @param title         标题
 * @param content       内容
 * @param imgUrl        图片的Url
 * @param siteUrl       网站的Url
 * @param shareListener 分享的回调
 */
private static void useDefaultGUI(String title, String content, String imgUrl, String siteUrl, PlatformActionListener shareListener) {
    ShareSDK.initSDK(mContext);
    OnekeyShare oks = new OnekeyShare();
    //关闭sso授权
    //oks.disableSSOWhenAuthorize();
    // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
    oks.setTitle(title);
    // titleUrl是标题的网络链接,仅在人人网和QQ空间使用
    oks.setTitleUrl(siteUrl);
    //分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测试新浪微博
    oks.setImageUrl(imgUrl);
    // url仅在微信(包括好友和朋友圈)中使用
    oks.setUrl(siteUrl);
    // site是分享此内容的网站名称,仅在QQ空间使用
    oks.setSite("");
    // siteUrl是分享此内容的网站地址,仅在QQ空间使用
    oks.setSiteUrl(siteUrl);

    // text是分享文本,所有平台都需要这个字段
    oks.setText(content + "\n链接: " + siteUrl);

    //设置回调
    oks.setCallback(shareListener);

    // 启动分享GUI
    oks.show(mContext);
}

自定义GUI的分享

如果不使用ShareSDK自带的GUI,自定义分享的布局,则在对应的点击事件中,调用分享到某个平台的方法,下面介绍封装好的单独分享到微信、朋友圈、QQ好友、QQ空间、新浪微博的方法。

分享到微信好友或朋友圈
/**
 * 分享到微信好友或朋友圈,图片可以是ur或者是本地的,默认本地图片优先
 *
 * @param wechatType    微信好友或朋友圈 Wechat.NAME 微信好友 WechatMoments.NAME 朋友圈
 * @param shareType    分享的类型 Platform.SHARE_WEBPAGE 网页 Platform.SHARE_IMAGE 图片
 * @param title         标题
 * @param content       内容
 * @param siteUrl       网站的url
 * @param imgUrl        网络图片的url
 * @param bm            bitmap
 * @param imgPath       本地图片的绝对路径
 * @param shareListener 分享的回调
 */
private static void shareToWechat(String wechatType, int shareType, String title, String content, String siteUrl, String imgUrl, Bitmap bm, String imgPath, PlatformActionListener shareListener) {
    ShareSDK.initSDK(mContext);

    Wechat.ShareParams shareParams = new Wechat.ShareParams();
    shareParams.setShareType(shareType);
    shareParams.setTitle(title);//设置标题
    shareParams.setText(content);//设置内容
    shareParams.setUrl(siteUrl);//设置网站

    if (!TextUtils.isEmpty(imgUrl)) {
        //如果有网络图片,则设置图片的url
        shareParams.setImageUrl(imgUrl);
    }

    if (bm != null) {
        //如果是bitmap类型,则设置bm
        shareParams.setImageData(bm);
    }

    if (!TextUtils.isEmpty(imgPath)) {
        //如果是本地图片路径,则设置图片路径
        shareParams.setImagePath(imgPath);
    }

    Platform platform = ShareSDK.getPlatform(wechatType);
    platform.share(shareParams);//分享
    if (shareListener != null) {
        platform.setPlatformActionListener(shareListener);//设置回调
    } else {
        //如果为空,设置默认回调回调
        platform.setPlatformActionListener(defaultShareListner);
    }
}

其中,第一个参数是分享到微信的类型:

  • 如果是分享给微信好友,则是传 Wechat.NAME;

  • 如果是分享到朋友圈,则是传 WechatMoments.NAME;

如果分享的是图片,可以传入网络图片的链接、bitmap对象、本地图片的绝对路径,三者只需传入一个,其他两个设置为null即可,如果三个都设置了,则只会显示其中一个,按照以下优先级(从高到底),只把优先级最高的那个显示:

  1. bitmap

  2. imgPath

  3. imgUrl

当最后一个参数传入的分享动作回调为null时,会使用默认的回调:

/**
 * 默认的分享回调
 */
public static PlatformActionListener defaultShareListner = new PlatformActionListener() {
    @Override
    public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(mContext, "分享成功", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onError(Platform platform, int i, Throwable throwable) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(mContext, "分享失败", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onCancel(Platform platform, int i) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(mContext, "分享已取消", Toast.LENGTH_SHORT).show();
            }
        });
    }
};

这里和使用默认的GUI方法不同,如果为platform.setPlatformActionListener()传入的回调为null,会报空指针异常,所以这里创建一个默认的回调,也是弹出对应的吐司提示而已。

分享到QQ,QQ空间
 /**
 * 分享到QQ,QQ空间
 *
 * @param title         标题
 * @param content       内容
 * @param siteUrl       网站的url
 * @param imgUrl        网络图片的url
 * @param bm            bitmap
 * @param imgPath       本地图片的绝对路径
 * @param shareListener 分享的回调
 */
private static void shareToQQ(String title, String content, String siteUrl, String imgUrl, Bitmap bm, String imgPath, PlatformActionListener shareListener) {
    ShareSDK.initSDK(mContext);
    QQ.ShareParams shareParams = new QQ.ShareParams();
    shareParams.setShareType(Platform.SHARE_WEBPAGE);
    shareParams.setTitle(title);//标题
    shareParams.setText(content);//内容
    shareParams.setTitleUrl(siteUrl);//网址

    if (!TextUtils.isEmpty(imgUrl)) {
        //如果有网络图片,则设置图片的url
        shareParams.setImageUrl(imgUrl);
    }

    if (bm != null) {
        //如果是bitmap类型,则设置bm
        shareParams.setImageData(bm);
    }

    if (!TextUtils.isEmpty(imgPath)) {
        //如果是本地图片路径,则设置图片路径
        shareParams.setImagePath(imgPath);
    }

    Platform platform = ShareSDK.getPlatform(QQ.NAME);
    platform.share(shareParams);//分享
    if (shareListener != null) {
        platform.setPlatformActionListener(shareListener);//设置回调
    } else {
        //如果为空,设置默认回调回调
        platform.setPlatformActionListener(defaultShareListner);
    }
}
分享到新浪微博
 /**
 * 分享到新浪微博
 *
 * @param content       内容
 * @param siteUrl       网站的url
 * @param imgUrl        网络图片的url
 * @param bm            bitmap
 * @param imgPath       本地图片的绝对路径
 * @param shareListener 分享的回调
 */
private static void shareToSina(String content, String siteUrl, String imgUrl, Bitmap bm, String imgPath, PlatformActionListener shareListener) {
    ShareSDK.initSDK(mContext);
    SinaWeibo.ShareParams shareParams = new SinaWeibo.ShareParams();
    shareParams.setContentType(Platform.SHARE_WEBPAGE);
    shareParams.setText(content + "\n" + siteUrl);//设置内容
    if (!TextUtils.isEmpty(imgUrl)) {
        //如果有网络图片,则设置图片的url
        shareParams.setImageUrl(imgUrl);
    }

    if (bm != null) {
        //如果是bitmap类型,则设置bm
        shareParams.setImageData(bm);
    }

    if (!TextUtils.isEmpty(imgPath)) {
        //如果是本地图片路径,则设置图片路径
        shareParams.setImagePath(imgPath);
    }

    Platform platform = ShareSDK.getPlatform(SinaWeibo.NAME);
    platform.share(shareParams);//分享
    if (shareListener != null) {
        platform.setPlatformActionListener(shareListener);//设置回调
    } else {
        //如果为空,设置默认回调回调
        platform.setPlatformActionListener(defaultShareListner);
    }
}



内容概要:本文介绍了“快速LDP-MST”这一针对大型数据集的高效基于密度峰值的聚类方法,并提供了完整的Matlab代码实现。该方法通过构建最小生成树(MST)并融合密度峰值聚类思想,有效提升了传统算法在处理大规模、复杂分布数据时的聚类效率与准确性,尤其适用于高维与非球形簇结构的数据分析任务。文章不仅阐述了算法的核心原理与技术优势,还强调了科研过程中逻辑思维、创新意识与“借力”工具的重要性,倡导研究者善用现有资源加速科研进程。; 适合人群:具备一定编程基础,特别是熟悉Matlab语言,从事数据科学、机器学习、模式识别或相关领域的科研人员、工程师及研究生;尤其适合正在开展聚类算法研究或需要高效处理大规模数据的开发者。; 使用场景及目标:①在大规模数据集中实现高效、精确的聚类分析;②研究基于密度与图论结合的聚类算法设计原理与优化路径;③通过提供的Matlab代码快速搭建实验环境,验证算法性能,或在此基础上进行二次开发与算法改进。; 阅读建议:此资源以Matlab代码为核心支撑,建议读者结合算法理论与工程实践,按照文档结构循序渐进地学习,充分利用所提供的网盘代码与模型资源,动手运行、调试并可视化算法结果,从而深入理解快速LDP-MST算法的设计思想与实现细节,提升科研效率与创新能力。
内容概要:本文围绕考虑电动汽车灵活性的微网多时间尺度协调调度问题展开研究,提出了一种基于Matlab的代码实现方案。研究充分利用电动汽车作为移动储能单元所具有的时空灵活性,将其整合到微网能量管理系统中,构建了涵盖日前计划与实时调整两个时间尺度的协调优化调度模型。模型综合考虑了可再生能源(如光伏发电)的波动性、负荷需求变化、分时电价机制以及电动汽车用户的充放电行为等多重因素,通过建立以最小化系统综合运行成本为目标的优化问题,并结合适当的约束条件,采用优化算法求解,从而实现对微网内多种分布式资源的高效协同调度。该方法有效提升了微网对可再生能源的消纳能力和系统运行的经济性与稳定性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微网、智能电网相关工作的工程技术人员。; 使用场景及目标:①用于教学与科研中深入理解微网多时间尺度调度的机制与建模方法;②为实际微网工程项目中引入电动汽车参与需求响应与调度提供理论依据和可复用的仿真工具;③支撑在能源互联网背景下开展关于需求响应、分布式能源集成及灵活性资源优化利用的前沿研究。; 阅读建议:建议读者结合提供的Matlab代码,逐步理解从问题建模、目标函数设计、约束条件设定到最终优化求解的完整流程,重点关注电动汽车灵活性建模与多时间尺度协调策略的具体实现方式。同时,可通过修改电动汽车渗透率、改变充电策略或调整电价信号等参数进行扩展实验,以深化对系统灵活性资源调度效果与影响因素的理解。
内容概要:本文档围绕“源网荷储”背景下的现代电力系统优化问题,重点研究基于二阶锥规划(SOCP)的主动配电网优化调度方法,并结合Matlab与Simulink平台实现仿真建模。内容涵盖高渗透率电动汽车接入对配电网承载能力的影响评估、源-网-荷-储协同优化、多时间尺度调度、分布式能源并网控制、储能管理、需求响应及电力系统稳定性分析等关键技术。文档提供了丰富的科研选题与完整的Matlab/Simulink代码实现案例,展示了SOCP在电力系统优化中的建模优势,同时延伸至机器学习、路径规划、信号处理等交叉学科应用,突出数学规划与智能算法在提升系统灵活性与稳定性方面的作用。; 适合人群:适用于具备电力系统、电气工程、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网优化、综合能源系统等方向研究的科研人员、研究生及工程技术人员,尤其适合正在开展高水平学术论文写作或项目开发的专业人士。; 使用场景及目标:①开展含高比例可再生能源与电动汽车接入的配电网承载能力评估与优化调度研究;②掌握基于SOCP的电力系统二阶锥松弛建模与求解方法;③学习光伏、储能、电动汽车等多元设备的协同控制与仿真建模技术;④实现源网荷储协同下的多时间尺度优化策略与Matlab代码开发;⑤拓展至机器学习、路径规划、信号处理等跨学科研究方向。; 阅读建议:建议结合文档附带的网盘资源与完整代码包,按照研究主题循序渐进地实践仿真模型,重点关注SOCP建模流程、YALMIP等优化工具箱的应用,通过复现经典案例加深对电力系统优化理论与工程实现的理解,并在此基础上进行创新性扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值