android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" >
android:name=".wxapi.WXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" >
6)申请配置第三方平台的key
接下来我们需要找到src->main->assets下的ShareSDK.xml文件,将其打开;
这里打开后我们可以看到ShareSDK的appkey,前面注册的时候我们已经介绍过,注册完的appkey替换这里默认的appkey(必要)
其次就是第三方的appid或者appkey等了,这些第三方的key需要开发者去对应的第三方平台去申请。首先是替换ShareSDK的appKey。然后是替换你所需要的分享平台的APPID/APPKey/APPSecret就可以了。是不是很简单呢?
7)初始化ShareSDK
使用ShareSDK必须要进行初始化,代码如下:
ShareSDK.initSDK(Context,"你所申请的sharesdk的appkey");
初始化第一个参数传当前activity的context对象,第二个参数传ShareSDK的appkey,第二个参数可以省略不传,因为sharesdk.xml已经配置,默认会访问的;
初始化的代码尽量放到调用分享的activity的入口oncreat下就好,尽量不要再application里初始化,也可以多次调用初始化ShareSDK,初始化ShareSDK必须放到所有调用ShareSDK的最前端。
8)调用onekeyshare的界面分享
接下来我们配置onekeyshare的代码,如下所示:
private void showShare(String title,String content,String address,String image,String logo) {
ShareSDK.initSDK(mContext);
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间等使用
oks.setTitle(title);
// titleUrl是标题的网络链接,QQ和QQ空间等使用
oks.setTitleUrl(address);
// text是分享文本,所有平台都需要这个字段
oks.setText(content);
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl(address);
oks.setSiteUrl(address);
oks.setImageUrl(logo);
// 启动分享GUI
oks.show(mContext);
}
这是我自己精简了的方法,和官方上的有不同的地方,但是已经可以能满足我的项目中的需求了。界面如下:
到此为止,我们已经可以实现一键分享的功能了。但是偏偏没那么简单就结束,因为,在我的项目中,还有一个需求就是:
指定平台进行分享,你总不可能,点一个图标还弹出一个popuwindow来吧。所以只能继续踩坑了啊。按照官方文档,和不断的踩踩踩之后,三个平台的分享方法简单如下面所示:
指定QQ分享:
private void qqShare(String title,String content,String address,String image,String logo) {
ShareSDK.initSDK(mContext);
Platform.ShareParams sp = new Platform.ShareParams();
sp.setTitle(title);
sp.setTitleUrl(address); // 标题的超链接
sp.setText(content);
sp.setImageUrl(logo);
sp.setSite("随便写");
sp.setSiteUrl(address);
Platform qzone = ShareSDK.getPlatform(QQ.NAME);
// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)
qzone.setPlatformActionListener((PlatformActionListener) mContext);
// 执行图文分享
qzone.share(sp);
}
指定微信分享:
private void wxShare(String title,String content,String address,String image,String logo) {
ShareSDK.initSDK(mContext);
Platform.ShareParams wechat = new Platform.ShareParams();
wechat.setTitle(title);
wechat.setText(content);
wechat.setImageUrl(logo);
wechat.setUrl(address);
wechat.setShareType(Platform.SHARE_WEBPAGE);
Platform weixin = ShareSDK.getPlatform(mContext, Wechat.NAME);
weixin.setPlatformActionListener((PlatformActionListener) mContext);
weixin.share(wechat);
}
指定朋友圈分享:
private void friendShare(String title,String content,String address,String image,String logo) {
ShareSDK.initSDK(mContext);
Platform.ShareParams wechatMoments = new Platform.ShareParams();
wechatMoments.setTitle(title);
wechatMoments.setText(content);
wechatMoments.setUrl(address);
wechatMoments.setImageUrl(logo);
wechatMoments.setShareType(Platform.SHARE_WEBPAGE);
Platform weixin = ShareSDK.getPlatform(mContext, WechatMoments.NAME);
weixin.setPlatformActionListener((PlatformActionListener) mContext);
weixin.share(wechatMoments);
Toast.makeText(mContext, "朋友圈分享", Toast.LENGTH_SHORT).show();
}
我这里只是做简单的分享,如果你每个平台分享的类型不一样,可参考Mob官网的 Android 不同平台分享内容的详细说明。
好了,今天的坑就踩到这里吧!欢迎大家一起来交流!!!!