当我们项目中需要集成分享功能时,我们通常会采取一下几个办法:

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非第三方的更多相关文章

  1. 一键分享到QQ空间、QQ好友、新浪微博、微信代码

    通过qq空间.qq聊天.新浪微博和微信二维码分享平台提供的接口,实现把网页中对应的图片.标题.描述的信息参数用javascript获取后传进接口中,实现一键分享. 使用到的接口(测试时需要登录,网址和 ...

  2. Oauth2.0 QQ&微信&微博实现第三方登陆

    一.写在前面 目前对于大多数的App或Web网站都支持有第三方登陆这个功能,用户可使用 QQ/ 微信/ 微博 帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户.最近在新项目上刚好用到了,在 ...

  3. 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)

    刚准备敲键盘,突然想起今天已经星期五了,有点小兴奋,一周又这么愉快的结束,又可以休息了,等等..我好像是来写Java博客的,怎么变成了写日记,好吧,言归正传. 不知道大家有没有遇到过这样的需求:统计一 ...

  4. qq 微信 微博 第三方分享

    <html> <head> <meta charset="utf-8"> <meta name="viewport" ...

  5. 微信支付官方SDK V3 .NET版的坑

    但是支付成功后却不能正确的执行支付结果js回调函数.看看其页面的点击事件是放在asp:Button上面的.我们知道在asp.net webform中,按钮的点击是有页面回调后台的.也就是其实点击了之后 ...

  6. 分享-QQ/微信/微博(环境搭建)

    QQ环境搭建

  7. Python 第三方登录 实现QQ 微信 微博 登录

    本人写的AgentLogin,能快速返回QQ.微信.微博第三方用户名信息,主要用于快速登录 用 pip命令安装 pip install AgentLogin 用法 : 导入这个包 from Agent ...

  8. TP QQ 微信 微博登录

    use Org\Util\QQconnect; use Org\Util\Wechatauth; use Org\Util\SaeTOAuthV2; use Org\Util\SaeTClientV2 ...

  9. react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)

    目前手机使用的一键分享SDK比较主流的有两个:一个是ShareSDK,另一个是友盟分享. 又因为友盟功能比较多且比较全,比如说友盟统计.友盟推送等,所以本文重点介绍的是友盟分享功能在rn上的应用以及要 ...

随机推荐

  1. widows下的进程与服务

    进程: 当程序卡死的时候,我们可以直接通过任务管理器来关闭进程. 服务: 在这个界面,我们可以选择启动或者关闭相关服务,还可以选择服务是否自动启动. 以关闭MySQL自启动服务为例:https://j ...

  2. tf.contrib.seq2seq.sequence_loss example:seqence loss 实例代码

    #!/usr/bin/env python # -*- coding: utf-8 -*- import tensorflow as tf import numpy as np params=np.r ...

  3. python学习之装饰器-

    python的装饰器 2018-02-26 在了解python的装饰器之前我们得了解python的高阶函数 python的高阶函数我们能返回一个函数名并且能将函数名作为参数传递 def outer() ...

  4. Spring中<context:annotation-config/>

    最近在研究Spring中<context:annotation-config/>配置的作用,现记录如下: <context:annotation-config/>的作用是向Sp ...

  5. JSON.NET的Self referencing loop detected with type的原因以及解决办法

    模型中有循环引用是很常见的.例如,以下模型显示双向导航属性: : public class Category : { : public Category() : { : Products = new ...

  6. Web压力测试和手机App测试

    总纲:认识测试关系和目标http://blog.csdn.net/superxgl/article/details/27189631 一.web测试和App服务端测试 软件安装 建议安装loadrun ...

  7. sourceTree+gerrit管理代码

    第一次接触gerrit,会对这种代码管理方式非常排斥,尤其是习惯了用sourceTree配合git进行代码管理的同学.不爽归不爽,代码还得写,我们的目标是让开发过程爽起来. 关于gerrit的知识,移 ...

  8. Python中什么是变量Python中定义字符串

    在Python中,变量的概念基本上和初中代数的方程变量是一致的. 例如,对于方程式 y=x*x ,x就是变量.当x=2时,计算结果是,当x=5时,计算结果是25. 只是在计算机程序中,变量不仅可以是数 ...

  9. Go 语言函数闭包

    Go 语言支持匿名函数,可作为闭包.匿名函数是一个"内联"语句或表达式.匿名函数的优越性在于可以直接使用函数内的变量,不必申明. 以下实例中,我们创建了函数 getSequence ...

  10. PHP 5 Array 函数

    PHP Array 简介 PHP Array 函数允许您访问并操作数组. 支持简单的数组和多维数组. 安装 PHP Array 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP 5 ...