简介
如今的app中,几乎都包含了分享这个功能,十分的常用
常见实现方式:
1. 系统自带分享
2. 使用社会化分享组件(如shareSDK等)
3. 集成三方SDK(QQ,微信,微博等)
android的自带分享功能功能太过单一,不能满足复杂的业务需求,这里主要介绍一下ShareSdk 和 集成三方SDK的方式
ShareSdk使用及注意事项
App Key App Secret
首先需要注册ShareSDK账号,并在后台创建应用,获取获取App Key和App Secret ,应用名后期可更改,App Key和App Secret 则不会改变
SDK下载及导入
选择我们需要分享到的平台 ,或者直接下载官方Demo.
在刚才下载的SDK中,找到快速集成程序,QuickIntegrater.jar,按照相应操作,即可生成相关集成所需文件,点击确定后,会生成一个Sample目录.将目录中的文件拷贝到项目中,
相关配置
这里的分享渠道参数配置有三种方式,分别是 在后台, 代码中,ShareSDK.xml中
其中最简单,最常用的就是在ShareSDK.xml中配置
ShareSDK.xml放置在资产目录assets下
这种方式的弊端就是在应用发出去后不可动态更改
然后添加清单文件中的权限配置和 activity回调配置
分享及回调
//Activity#onCreate()
//使用ShareSDK.xml方式配置
ShareSDK.initSDK(this);
// 使用代码或者应用后台配置
ShareSDK.initSDK(this,”androidv1101″);
//androidv1101:是你的应用在ShareSDK注册应用信息时返回的AppKey
//share
private void showShare(Context context,PlatformActionListener listener){
OnekeyShare oks = new OnekeyShare();
//...
//设置内容回调,用于自定义不同平台的字段内容
oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback());
//设置回调监听
oks.setCallback(listener);
//设置自定义图标
oks.setCustomerLogo(press, nomal, label,listener);
oks.show(context);
}
//Activity#onDestroy()
ShareSDK.stopSDK(this);
官方SDK 分享
这里我们自己使用QQ ,微信和微博的SDK来进行分享,并进行一定的封装,
QQ分享
什么首先获取appid等等,这些都是一般的流程.QQ分享主要用到类QQShare
//初始化
mTencent = Tencent.createInstance(qqAppId, activity);
this.mQQShare = new QQShare(activity, mTencent.getQQToken());
//分享
/**
* 设置分享内容
* 参数说明
* QzoneShare.SHARE_TO_QQ_KEY_TYPE 选填 Int SHARE_TO_QZONE_TYPE_IMAGE_TEXT(图文)
* QzoneShare.SHARE_TO_QQ_TITLE 必填 Int 分享的标题,最多200个字符。
* QzoneShare.SHARE_TO_QQ_SUMMARY 选填 String 分享的摘要,最多600字符。
* QzoneShare.SHARE_TO_QQ_TARGET_URL 必填 String 需要跳转的链接,URL字符串。
* QzoneShare.SHARE_TO_QQ_IMAGE_URL 选填 String 分享的图片, 以ArrayList<String>的类型传入,以便支持多张图片(注:图片最多支持9张图片,多余的图片会被丢弃)。
*/
//其中bundle中传入的就是上面的那些参数,baseUiListener是为回调
mQQShare.shareToQQ(mActivity, bundle, baseUiListener);
微信分享
微信分享依靠 的是IWXAPI来完成的,其中提供了几个类来辅助构建分享内容
- WXTextObject: 文本内容
- WXImageObject: 图片内容
- WXWebpageObject: 网页内容
- WXMusicObject: music内容
//init
mIWXAPI = WXAPIFactory.createWXAPI(activity, weChatAppId, true);
mIWXAPI.registerApp(weChatAppId);
// 构建分享内容
WXMediaMessage msg = new WXMediaMessage(music);
msg.title = shareContent.getTitle();
msg.description = shareContent.getContent();
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
//开始分享
mIWXAPI.sendReq(req);
注意:微信分享需要签名,并且新建wxapi/WXEntryActivity.java
微博分享
参照sinaweibosdk/weibo_android_sdk,同样微博也提供了文本,图片,webpage和music的分享.
private void shareText(ShareContent shareContent) {
//初始化微博的分享消息
WeiboMultiMessage weiboMultiMessage = new WeiboMultiMessage();
weiboMultiMessage.textObject = getTextObj(shareContent.getContent());
//初始化从第三方到微博的消息请求
SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
request.transaction = String.valueOf(System.currentTimeMillis());
request.multiMessage = weiboMultiMessage;
share(mActivity, request);
}
// 使用网页分享时会触发回调
mSinaAPI.sendRequest((Activity) context, request, authInfo, token, weiboAuthListener);
注意使用客户端分享的时候,需要回调activity实现IWeiboHandler.Response,并在清单文件下配置
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
封装
最后,为了方便使用,这里对三方分享进行了一定的封装ShareLoginPay,只要配置好appid等配置信息即可.
//以微信分享为例
LoginBlock.getInstance().initWechatLogin(wechatAppId, wechatAppSecret);
IShare wxshare = new WechatShare(this);
ShareContent shareContent = new ShareContent();
shareContent.setContent("分享的内容");
shareContent.setTitle("分享的标题");
//分享文本
shareContent.setContentType(ContentType.TEXT);
//分享到好友,而不是朋友圈
shareContent.setShareType(ShareType.WECHAT);
wxshare.share(shareContent, new IShareCallBack() {
@Override public void onComplete(Object o) {
Toast.makeText(MainActivity.this, "onComplete-->" + o.toString(), Toast.LENGTH_SHORT)
.show();
}
@Override public void onError(Exception e) {
Toast.makeText(MainActivity.this, "onError-->" + e.toString(), Toast.LENGTH_SHORT).show();
}
@Override public void onCancel() {
Toast.makeText(MainActivity.this, "onCancel", Toast.LENGTH_SHORT).show();
}
});
本文详细介绍了APP中分享功能的实现方式,包括系统自带分享、社会化分享组件(如ShareSDK)和集成三方SDK(如QQ、微信、微博)。重点阐述了ShareSDK的使用方法、配置步骤以及三方SDK的集成过程,并提供了封装示例,旨在帮助开发者实现更复杂且定制化的分享需求。
9082

被折叠的 条评论
为什么被折叠?



