前言
第三方分享在日常开发中已经是见怪不怪了,为了方便快捷,大多数情况下我们都会使用第三方平台提供的分享功能,来集成第三方分享,这里我将带大家使用友盟完成第三方分享,这可能是迄今为止最人性的教程,相信我,这比繁琐的官网要简单的多。如果你只是想练习一下demo而非实战,我建议可以去友盟官网下载demo查看学习。
集成顺序及步骤
为了更加清晰明了,我会将教程分为三个集成环节
- 第三方开发者平台申请
- 友盟申请
- 集成友盟分享
第三方开发者平台申请
这一环节主要是申请各自分享平台的AppKey或AppId及AppSecret,
这里提供主流分享的三方开发者平台,大家可以根据自己情况自行申请,当然我相信,现在大多数已经只分享 QQ 微信 微博了。其他平台大家可自行搜索,就让我偷个小懒。
- 微信开放平台
- QQ开放平台
- 新浪微博开放平台
友盟申请
集成友盟分享
短短篇幅我们就来到文章最重要的地方,这里我会非常详细的介绍如何集成和分享,当然所有的前提是,你已经得到了需要分享的平台的AppKey或AppId及AppSecret和友盟的AppKey
第一步:集成jar包和添加相应的布局文件和图片资源
然后点击右边的设置
在这里我们勾选我们需要分享的平台,这里实战演练为新浪,QQ,微信,这也是友盟默认为我们勾选的,关于完整版与精简版,大家点击旁边的问号就能查看区别所在,这里就不多阐述了。
确定后,我们点击下载,得到压缩包,解压后是这样子的:
我们需要将common和share下的所有jar包复制出来(记住是所有的),thirdparties可以不用管,放到项目的libs下,如项目图所示:
接下来将share下所有的xml文件放到项目的layout包中,将所有图片资源放到drawable包中,很重要哈,如果没有添加,使用友盟默认的弹窗样式和图片就会报错!!!
第二步:在注册清单添加权限及相应的代码
<!--友盟分享-->
<!--新浪-->
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
>
</activity>
<activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize"
>
</activity>
<activity
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!--微信-->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--QQ-->
<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" />
//例如appid为123456789,那这里填写tencent123456789
<data android:scheme="tencent填写自己申请的appid" />
</intent-filter>
</activity>
<activity
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<!--友盟分享end-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
第三步:初始化代码配置
在Application中,初始化
UMConfigure.init(this, "友盟的Appkey", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
//微信
PlatformConfig.setWeixin("Appkey","AppSecret");
//新浪微博(第三个参数为回调地址)
PlatformConfig.setSinaWeibo("Appkey",
//QQ
PlatformConfig.setQQZone("AppId", "AppSecret");
第四步:在需要使用分享的地方重写onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
第五步:分享代码
问题
集成完分享后,可能出现的问题,最简单的方式:
//强烈建议大家在Application中开启友盟日志输出,在出错的地方会在日志中提示并提供解决办法
UMConfigure.setLogEnabled(true);
这里提一个一般大家很容易出现的bug:
点击微信分享闪烁或闪退???
首先检查你的app的签名是否与开发者平台上的签名一致,如果一致,需要清理微信缓存,怎么清理呢?
进入手机设置-应用,找到微信,点击清理缓存即可。清理完成后,再打开app点击微信分享试一试。
如果你有其他问题,可以评论,我会在第一时间回复。