下文只讨论使用友盟分享微信,qq等实现方式,
微信分享主要还是三步,第一,申请appkey,申请的时候需要填写keystore文件中的md5和packagename,注意填写的时候需要将eclipse打包最后一步中的md5中间的冒号去掉,另外,将大写换成小写,最后也就是一个字符串,将这个字符串填写进去才行,
微信开放平台地址:
检验是否填写正确可以去微信开放平台下载Gen_Signature_Android.apk,打开这个apk,填写进去你要申请appkey的packagename,获取到md5,如果和你填写的一致,说明填写正确,否则,填写错误。
apk下载地址:
https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
第二步:等待审核通过,目前只有审核通过的才可以进行分享,审核通过后,会给你一个appid,appsecret,这俩个字段需要在代码中用到。
第三步:编码完成分享,两个思路,第一个可以直接在友盟的官网中下载demo,然后替换appid,appsecret,替换keystore文件,就是将demo中的keystore文件替换系统默认的debug.keystore文件,第二个,可以下载已经写好的示例demo,比如umeng_third_login,然后还是替换appid,appsecret,替换keystore文件。
这里是否分享成功需要正确配置manifest文件,如下
<!-- 分享内容编辑页 -->
<activity
android:name="com.umeng.socialize.view.ShareActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@style/Theme.UMDialog"
android:windowSoftInputMode="stateVisible|adjustResize" >
</activity>
<!-- 腾讯SSO授权的Activity注册 -->
<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="tencent100424468" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微信回调activity -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 易信回调activity -->
<activity
android:name=".yxapi.YXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 人人SSO授权所需的OAuthActivity -->
<activity
android:name="com.renn.rennsdk.oauth.OAuthActivity"
android:configChanges="orientation|navigation|keyboardHidden" />
<!-- facebook相关 -->
<activity android:name=".activity.FacebookActivity" >
</activity>
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
然后在代码中创建包,wxapi目录,新建WXEntryAcivity类,如果想处理分享返回事件,可以写具体代码,如果不想处理,直接写一个空继承也行,比如:
public class WXEntryActivity extends WXCallbackActivity {
}
也可以写:
/** 微信客户端回调activity示例 */
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
// IWXAPI 是第三方app和微信通信的openapi接口
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
api = WXAPIFactory.createWXAPI(this, "这里替换第一步申请的APP_ID", false);
api.handleIntent(getIntent(), this);
super.onCreate(savedInstanceState);
}
@Override
public void onReq(BaseReq arg0) { }
@Override
public void onResp(BaseResp resp) {
LogManager.show(TAG, "resp.errCode:" + resp.errCode + ",resp.errStr:"
+ resp.errStr, 1);
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
//分享成功
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
//分享取消
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
//分享拒绝
break;
}
}
}
同样,这个类需要在manifest中声明,然后在需要分享的地方直接编写分享代码就可以:
例如:
/**
* @功能描述 : 添加微信平台分享
* @return
*/
private void addWXPlatform() {
// 注意:在微信授权的时候,必须传递appSecret
// wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
String appId = "xxxxx";
String appSecret = "xxxxxxxxxxxxxxxxxx";
// 添加微信平台
UMWXHandler wxHandler = new UMWXHandler(SettingsActivity.this, appId,
appSecret);
wxHandler.addToSocialSDK();
// 支持微信朋友圈
UMWXHandler wxCircleHandler = new UMWXHandler(SettingsActivity.this,
appId, appSecret);
wxCircleHandler.setToCircle(true);
wxCircleHandler.addToSocialSDK();
}
mController.getConfig().setPlatforms(SHARE_MEDIA.WEIXIN,
SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SMS);
mController.openShare(SettingsActivity.this, false);
这样就打包签名处apk以后,就可以分享微信,朋友圈了。
注意keystore文件,在调试状态下,需要将正确的keystore文件替换debug.keystore文件才行,否则分享不成功,还有manifest文件中权限需要声明正确完整。
如果都填写正确,还是分享不正确,提示errcode_deny的话,请尝试清理微信的缓存和数据,再进行尝试分享,或许就可以分享成功。
以上是微信分享,qq分享类似,稍微比微信分享简单点。
参考链接:
http://www.cnblogs.com/android100/p/Android-qq.html
http://bbs.umeng.com/thread-7768-1-1.html
http://www.360doc.com/content/14/0908/06/9200790_407759192.shtml
http://bbs.umeng.com/forum.php?mod=viewthread&tid=5832&extra=page%3D1%26filter%3Ddigest%26digest%3D1