Android Mob ShareSDK分享遇到的坑

一键分享
主要注意的就是

 public void shareMsg(String name,String title,String url) {
        Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

        OnekeyShare oks = new OnekeyShare();

        //隐藏QQ平台
//        oks.addHiddenPlatform(QQ.NAME);
        //关闭sso授权
        oks.disableSSOWhenAuthorize();
        // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
        oks.setTitle(name);
        // titleUrl是标题的网络链接,仅在人人网和QQ空间使用
        oks.setTitleUrl(url);
        // text是分享文本,所有平台都需要这个字段
        oks.setText(title);
        // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数,
        // 使用 imagePath 必须保证SDcard下面存在此张图片
        //imagePath,imageUrl 必须保留一个,否则微信不能分享,或者分享过去的图片都是应用的 logo
//        oks.setImageUrl(Urls.BASE_URL + entity.pic);
        oks.setImageData(logo);
        // url仅在微信(包括好友和朋友圈)中使用
        oks.setUrl(url);
        // comment是我对这条分享的评论,仅在人人网和QQ空间使用
        oks.setComment(title);
        // site是分享此内容的网站名称,仅在QQ空间使用
        oks.setSite(name);
        // siteUrl是分享此内容的网站地址,仅在QQ空间使用
        oks.setSiteUrl(url);
    //去除分享正在后台的提示
        oks.setDisappearShareToast(true);


        oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
            @Override
            public void onShare(Platform platform, cn.sharesdk.framework.Platform.ShareParams paramsToShare) {
                if (Wechat.NAME.equals(platform.getName())) {
                    paramsToShare.setShareType(Platform.SHARE_WEBPAGE);
                    paramsToShare.setTitle(name);
                    paramsToShare.setTitleUrl(url);
                    paramsToShare.setText(title);
                    paramsToShare.setUrl(url);
                    paramsToShare.setImageData(logo);
                }

                if (QQ.NAME.equals(platform.getName())) {
                    paramsToShare.setTitle(name);
                    paramsToShare.setTitleUrl(url);
                    paramsToShare.setText(title);
                    paramsToShare.setUrl(url);
                    paramsToShare.setImageData(logo);
                }
            }
        });
    
        oks.setCallback(new PlatformActionListener() {
            @Override
            public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
                // TODO 分享成功后的操作或者提示
                Log.d("share","onComplete");
            }

            @Override
            public void onError(Platform platform, int i, Throwable throwable) {
                // TODO 失败,打印throwable为错误码
                Log.d("share","onError");
            }

            @Override
            public void onCancel(Platform platform, int i) {
                // TODO 分享取消操作
                Log.d("share","onCancel");
            }

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

指定平台分享

 private void sharePlatform(String name,String titleContent,String url){
       Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        Platform.ShareParams sp = new Platform.ShareParams();
        sp.setTitle(name);
        sp.setTitleUrl(url); // 标题的超链接
        sp.setText(titleContent);
//        sp.setImageUrl("http://www.someserver.com/测试图片网络地址.jpg");
        sp.setImageData(logo);
        sp.setSite(name);
        sp.setShareType(Platform.SHARE_WEBPAGE);
        sp.setUrl(url); // 标题的超链接
        sp.setSiteUrl(url);
        Platform qzone = ShareSDK.getPlatform (Wechat.NAME);
// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)
        qzone.setPlatformActionListener (new PlatformActionListener() {
            public void onError(Platform arg0, int arg1, Throwable arg2) {
                //失败的回调,arg:平台对象,arg1:表示当前的动作,arg2:异常信息
                Log.d("share","onError");
            }
            public void onComplete(Platform arg0, int arg1, HashMap arg2) {
                //分享成功的回调
                Log.d("share","onComplete");
            }
            public void onCancel(Platform arg0, int arg1) {
                //取消分享的回调
                Log.d("share","onCancel");
            }
        });
// 执行图文分享
        qzone.share(sp);
    }

注意事项
指定平台分享要注意分享的Type类型,比如这里使用的是Platform.SHARE_WEBPAGE类型
sp.setUrl(url);就不能缺少

    sp.setShareType(Platform.SHARE_WEBPAGE);

//imagePath,imageUrl 必须保留一个,否则微信不能分享,或者分享过去的图片都是应用的 logo
其次分享微信的时候主要签名这些基本要求要对应上

//去除分享正在后台的提示
oks.setDisappearShareToast(true);

//隐藏QQ平台
// oks.addHiddenPlatform(QQ.NAME);

你可能感兴趣的:(android)