安卓一键分享到qq,微信,微博,官方SDK非第三方
2015-12-17 17:49
751 查看
当我们项目中需要集成分享功能时,我们通常会采取一下几个办法:
1.调用系统自带分享
优点:简单快速,几行代码搞定,不需添加任何额外包;
缺点:系统会调出手机内部所有带分享功能的APP,且界面风格跟随系统,不可定制,若应用未安装则不可分享;
适用于对分享没有要求的APP,只要有分享功能即可。
2.使用第三方社会化组件分享
优点:集成相对简单,且有文档demo等参考,以及众多可选择的分享平台,甚至未安装的应用也可通过网页版分享等;
缺点:引入额外的库文件较多,容易使项目结构及代码发生混乱,且需花费时间研究;
3.使用需要分享的平台的官方SDK分享
优点:集成简单,只需引入对应平台sdk,UI可定制性极强,代码简洁;
缺点:同样需要安装对应客户端才可分享;
所以综合比较起来,如果只是定向分享到某几个平台,还是使用官方sdk比较好,本人对qq,微信,和微博这三个常用的分享平台做了一个封装,使用时只需三行代码即可调用,而额外的jar包,也只需添加对应平台的三个jar及微博的so文件:
项目结构:
![](http://img.blog.csdn.net/20151217174155415)
调用方法:
效果如图:
![](http://img.blog.csdn.net/20151217174346410)
注意:
1.由于微信有点特殊,如果想监听到微信的分享结果,则需要在项目的跟路径下创建包wxapi,且需在名为WXEntryActivity的Activity中进行分享,方可监听得到;
2.qq分享须在清单文件中添加:
3.微博监听分享状态须在清单文件中,分享Activity下:
如果不需要监听分享状态,那么代码将会更加简洁,也无需创建wxapi.WXEntryActivity,大家可自行删除状态监听部分代码!
另:
本demo中所使用的APPkey并不能用于测试,大家在使用时可以将代码提取出来放在自己的项目中,而key需要大家根据包名和签名文件MD5到相应平台申请成功后替换,方可看到分享结果!
demo源码:http://download.csdn.net/detail/baiyuliang2013/9365171
2016-04-28:
为了大家可以直接看到微信的分享效果,特地新创了一个签名文件,并去微信开放平台申请了key,并重新做了一个demo,去掉了各平台的分享回调,使代码简洁易懂,可直接应用于项目:
![](http://img.blog.csdn.net/20160428180446718)
![](http://img.blog.csdn.net/20160428180458343)
需要注意的点:
debug安装包直接使用正式签名:
![](http://img.blog.csdn.net/20160428180309762)
![](http://img.blog.csdn.net/20160428180322918)
![](http://img.blog.csdn.net/20160428180337559)
大家也可以用这种方法,省掉默认签名和正式签名切换的繁琐步骤!
另:如果遇到微信分享时一闪而过的现象,多半是key错误,请大家注意自己申请key时签名(正式)md5,包名是否书写有误!(微博分享道理相同)
无回调,微信可测demo:http://download.csdn.net/detail/baiyuliang2013/9505736
1.调用系统自带分享
优点:简单快速,几行代码搞定,不需添加任何额外包;
缺点:系统会调出手机内部所有带分享功能的APP,且界面风格跟随系统,不可定制,若应用未安装则不可分享;
适用于对分享没有要求的APP,只要有分享功能即可。
2.使用第三方社会化组件分享
优点:集成相对简单,且有文档demo等参考,以及众多可选择的分享平台,甚至未安装的应用也可通过网页版分享等;
缺点:引入额外的库文件较多,容易使项目结构及代码发生混乱,且需花费时间研究;
3.使用需要分享的平台的官方SDK分享
优点:集成简单,只需引入对应平台sdk,UI可定制性极强,代码简洁;
缺点:同样需要安装对应客户端才可分享;
所以综合比较起来,如果只是定向分享到某几个平台,还是使用官方sdk比较好,本人对qq,微信,和微博这三个常用的分享平台做了一个封装,使用时只需三行代码即可调用,而额外的jar包,也只需添加对应平台的三个jar及微博的so文件:
项目结构:
调用方法:
popShareHelper=new PopShareHelper(this,shareContent);//初始化pop工具类 popShareHelper.show();
效果如图:
注意:
1.由于微信有点特殊,如果想监听到微信的分享结果,则需要在项目的跟路径下创建包wxapi,且需在名为WXEntryActivity的Activity中进行分享,方可监听得到;
2.qq分享须在清单文件中添加:
<!-- QQ分享必须添加 --> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent1104899255" /> </intent-filter> </activity>
3.微博监听分享状态须在清单文件中,分享Activity下:
<!-- 其中的intent-filter必须添加,否则无法监听微博分享--> <activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
如果不需要监听分享状态,那么代码将会更加简洁,也无需创建wxapi.WXEntryActivity,大家可自行删除状态监听部分代码!
另:
本demo中所使用的APPkey并不能用于测试,大家在使用时可以将代码提取出来放在自己的项目中,而key需要大家根据包名和签名文件MD5到相应平台申请成功后替换,方可看到分享结果!
demo源码:http://download.csdn.net/detail/baiyuliang2013/9365171
2016-04-28:
为了大家可以直接看到微信的分享效果,特地新创了一个签名文件,并去微信开放平台申请了key,并重新做了一个demo,去掉了各平台的分享回调,使代码简洁易懂,可直接应用于项目:
需要注意的点:
debug安装包直接使用正式签名:
大家也可以用这种方法,省掉默认签名和正式签名切换的繁琐步骤!
另:如果遇到微信分享时一闪而过的现象,多半是key错误,请大家注意自己申请key时签名(正式)md5,包名是否书写有误!(微博分享道理相同)
无回调,微信可测demo:http://download.csdn.net/detail/baiyuliang2013/9505736
相关文章推荐
- 安卓一键分享到qq,微信,微博,官方SDK非第三方
- 微信公众号开发一些链接
- java微信支付“签名错误”之body为中文时
- 微信票选项目遇到的坑
- iPhone6 微信视频通话没有声音
- 微信企业号开发九:异步任务(全员覆盖成员)
- 微信支付窗口闪一下消失了
- 微信之父张小龙:APP产品经理必须要懂的30条原则
- 黑马公社(微信公众号:heimagongshe)
- 微信分享接口 keystore修改成具有 MD5手印
- Html5 手机wap开发、微信开发、APP开发的优缺点-创业者必知
- 微信公众帐号开发-消息及消息处理工具的封装
- 微信支付demo的使用笔记
- 微信公众平台开发
- 微信支付
- 微信支付:支付过期时间问题、302 问题、code 、openid
- 微信开发之使用java获取签名signature
- 微信大转盘实现 逻辑
- 微信HTML5抽奖活动的现实
- 如何保存微信的小视频 How to keep WeChat 'Sights'