QQ分享:
问题1:在第二次点击分享QQ的图标时,还未进行分享便已弹出分享失败的提示,偶尔还会弹很多次
问题2:在分享成功之后点击返回无法完成 SnsPostListener的onComplete中的StatusCode.ST_CODE_SUCCESS的回调,导致无法完成分享成功后应用本身应该做的操作
解决方案:
在经过与友盟分享的技术人员沟通,确定为在为QQ的SSO授权的Activity的 scheme填写错误 正确的应该为 scheme=“tencent+10位的QQ互联申请的分享的key” 而我们当时填写的是 scheme=“10位的QQ互联申请的分享的key” 少了"tencent的标识"
还有一点需要注意的是 在QQ互联申请到那个key以后,必须到友盟的分享设置下面把(QQ空间或腾讯微博 其中一个绑定已申请到的Key,具体哪个记不清楚了,可以参看友盟的文档),分享方可成功。到此,上面的两个问题也就全部解决了
新浪微博分享
问题 :点开分享新浪微博分享后,弹出授权界面,然后闪一下就关掉了,并没有弹出正常的新浪分享的界面
解决思路:
看到点击新浪微博后会弹出授权界面,根据文档了解到 授权完成后会回调onActivityResult(),所以到此方法下面下断点查看结果
debug模式调出来并运行后发现点击微博分享后顺利调用onActivityResult()
沿着此思路在想,在想此activity有什么特殊之处,因为在正常的activity测试调用分享方法,并无此问题出现。后来想到有可能是启动模式,singInstance的问题,因为如果设置了singleInstance或singleTask,则调用startActivityForResult()的时候会直接调用onActivityResult(),因为不同的栈中的是不允许进行数据传递的,所以会直接调用此方法,再次将启动模式去掉,改为默认的
结果新浪微博被正常的打开了,终于解决了两天的问题,看了几遍文档没有查到解决方案,没有想到此问题会出现在启动模式上面
解决方案:
将要分享的界面的启动模式设置为标准模式,不可使用singTask,singleInstace
注意:在分享的界面所在的activity必须重写onActivityResult()方法,并按文档中的方式进行授权,否则无法分享。如果分享界面在fragment中,则必须让所在的activity覆盖此方法