友盟三方分享总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20451879/article/details/85108549

后续补充完整

1.QQ无法分享纯文本

解决方式:
Android进阶之路 - 解决友盟无法QQ分享纯文本的问题

2.QQ无法分享图片,且直接走了Cancel的回调

解决方式:
application中的qqid和manifests的qqid需要填写同一个,如果用默认的就全都用默认id

3.QQ分享截取View的bitmap,多次点击分享无效,且Debug时bitmap返回为null

解决方式:
这里需要存储权限、权限、权限!!!
AndroidManifest.xml添加静态权限

android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE

申请动态权限场景伪代码(截取View转为Bitmap用于QQ分享):

RxPermissions rxPermissions = new RxPermissions(this);
                //Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA 文件存储权限、相机权限
                rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE, 		Manifest.permission.CAMERA).subscribe(new Observer<Boolean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Boolean aBoolean) {
                        //有权限的状态
                        if (aBoolean) {
                            Display displayQQ = getWindowManager().getDefaultDisplay();
                            UMImage umImageQQ = new UMImage(InviteAwardActivity.this, convertViewToBitmap(mSharePicture, displayQQ));
                           /* 便于找到自身错误
                            if (thumbImage == null) {
                                ToastUtils.shortShow("分享图片为空");
                            }*/
                            umImageQQ.setThumb(umImageQQ);
                            boolean qqClientAvailable = PlatformUtil.isQQClientAvailable(InviteAwardActivity.this);
                            if (qqClientAvailable) {
                                new ShareAction(InviteAwardActivity.this)
                                        .setPlatform(SHARE_MEDIA.QQ)
                                        .withMedia(umImageQQ)
                                        .setCallback(new UMShareListener() {
                                            @Override
                                            public void onStart(SHARE_MEDIA shareMedia) {

                                            }

                                            @Override
                                            public void onResult(SHARE_MEDIA shareMedia) {
                                                ToastUtils.shortShow("分享成功!");
                                            }

                                            @Override
                                            public void onError(SHARE_MEDIA shareMedia, Throwable throwable) {

                                            }

                                            @Override
                                            public void onCancel(SHARE_MEDIA shareMedia) {

                                            }
                                        }).share();
                            } else {
                                ToastUtils.shortShow("请安装QQ客户端");
                            }
                        }
                        //无权限的状态
                        else {
                            Toast.makeText(InviteAwardActivity.this, getString(R.string.picture_jurisdiction), Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

猜你喜欢

转载自blog.csdn.net/qq_20451879/article/details/85108549