安卓一键分享到qq,微信,微博,官方SDK非第三方
当我们项目中需要集成分享功能时,我们通常会采取一下几个办法:
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非第三方的更多相关文章
- 一键分享到QQ空间、QQ好友、新浪微博、微信代码
通过qq空间.qq聊天.新浪微博和微信二维码分享平台提供的接口,实现把网页中对应的图片.标题.描述的信息参数用javascript获取后传进接口中,实现一键分享. 使用到的接口(测试时需要登录,网址和 ...
- Oauth2.0 QQ&微信&微博实现第三方登陆
一.写在前面 目前对于大多数的App或Web网站都支持有第三方登陆这个功能,用户可使用 QQ/ 微信/ 微博 帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户.最近在新项目上刚好用到了,在 ...
- 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)
刚准备敲键盘,突然想起今天已经星期五了,有点小兴奋,一周又这么愉快的结束,又可以休息了,等等..我好像是来写Java博客的,怎么变成了写日记,好吧,言归正传. 不知道大家有没有遇到过这样的需求:统计一 ...
- qq 微信 微博 第三方分享
<html> <head> <meta charset="utf-8"> <meta name="viewport" ...
- 微信支付官方SDK V3 .NET版的坑
但是支付成功后却不能正确的执行支付结果js回调函数.看看其页面的点击事件是放在asp:Button上面的.我们知道在asp.net webform中,按钮的点击是有页面回调后台的.也就是其实点击了之后 ...
- 分享-QQ/微信/微博(环境搭建)
QQ环境搭建
- Python 第三方登录 实现QQ 微信 微博 登录
本人写的AgentLogin,能快速返回QQ.微信.微博第三方用户名信息,主要用于快速登录 用 pip命令安装 pip install AgentLogin 用法 : 导入这个包 from Agent ...
- TP QQ 微信 微博登录
use Org\Util\QQconnect; use Org\Util\Wechatauth; use Org\Util\SaeTOAuthV2; use Org\Util\SaeTClientV2 ...
- react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)
目前手机使用的一键分享SDK比较主流的有两个:一个是ShareSDK,另一个是友盟分享. 又因为友盟功能比较多且比较全,比如说友盟统计.友盟推送等,所以本文重点介绍的是友盟分享功能在rn上的应用以及要 ...
随机推荐
- jQuery Datetable 渲染
渲染器 有些情况下,使用表时,表中的行的数据源不包含您希望在表中直接显示的值.您可能希望将其转换为不同的表示形式(时间戳为人类可读的格式),合并数据点(名字和姓氏)或对该值执行一些计算(计算营业额和费 ...
- Win7删除文件夹提示找不到该项目无法删除
在使用win7操作系统的过程中,有一些朋友会遇到这种情况,因为某种不明原因,硬盘里面某一个文件夹无法删除,表现为在删除的时候,系统提示找不到该项目,即找不到该文件夹,就像它变成了幽灵一样,看得到却摸不 ...
- ES6(数组)
ES6数组新增特性 1. 空数组 2.将伪数组转换成真正的数组 将 p 标签集合转换成真正数组 类似于map的用法,转换数组同时还在遍历. 3.填充数组(将所有数组换成一个值) 1代表起始位置,3代表 ...
- [坑况]饿了么你是这样的前端——vue+element ui 【this dependency was not found:'element-ui/lib/theme-chalk/index.css'】
element ui 坑况:今日pull代码,潇洒npm run dev ,被告知:this dependency was not found:'element-ui/lib/theme-chalk/ ...
- 两个App之间调起通信
前言 经常使用一些app的分享功能,比如点击QQ分享,就从app打开(跳转到)QQ,然后分享完之后又回到我们的app,那么这是怎样实现的呢? 假设有这么一个需求,由app1跳转到app2,当app2完 ...
- gulp将多张小图自动合成雪碧图
最近一直在做移动端的改版项目,做之前老大就跟我说了好几次,说这次改版一定要用雪碧图减少一个页面的图片的请求次数,能加快页面的加载速度就一定要加快,我说可以.因为之前的项目开发时间过短,也没有时间去慢慢 ...
- jupyter notebook 更换主题的方法
参考 https://github.com/dunovank/jupyter-themes install with pip # install jupyterthemes pip install j ...
- CentOS 7下GitLab搭建及配置
由于公司业务,需要上Git版本控制. * 目前市面上比较有名的Git服务提供商,国外有GitHub.BitBucket.GitLab,国内有码云,Coding. * 现有的服务商,对于免费的套餐都有一 ...
- python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)
一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...
- MySQL DELETE 语句
MySQL DELETE 语句 你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在mysql>命令提示符或PHP脚本中执行该命令. 语法 以下是S ...