版权声明:本文为博主原创文章,未经博主允许不得转载。 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() {
}
});