最近做分享,小公司没啥要求,直接给弄了个系统原生的分享,然后呢经理说不好看,然后开始折腾友盟的,麻痹的,搞了好几天不是这里报错就是那里崩溃了,主要是分享成功之后返回APP崩溃的问题,好纠结,就直接集成了官方的SDK,跳出Umeng的坑了
QQ的比较好弄,不需要登录就可以分享:点击下载QQ的分享SDK相关资源并申请应用获取APP ID,我在新的Activity里面进行了分享的相关操作,每次需要分享的时候可以直接Intent到这个Activity就可以了
首先在配置类里面配置APP的ID
在配置清单里面配置所需要的Activity
"com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask" >
"android.intent.action.VIEW" />
"android.intent.category.DEFAULT" />
"android.intent.category.BROWSABLE" />
"tencent1105839038" />
"com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"
/>
ShareActivity.java
这是一个背景半透明的Activity,用来显示分享菜单,分享到QQ的方法调用如下:
/**
* 官方参考文档地址:http://wiki.open.qq.com/index.php?title=Android_API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E&=45038#1.13_.E5.88.86.E4.BA.AB.E6.B6.88.E6.81.AF.E5.88.B0QQ.EF.BC.88.E6.97.A0.E9.9C.80QQ.E7.99.BB.E5.BD.95.EF.BC.89
* @param title 分享的内容title
* @param openUrl 点击分享内容打开的地址
* @param description 分享item的描述信息 分享的消息摘要,最长40个字。
* @param imgUrl 分享item的图片地址
* @param shareType 1分享到QQ空间 2分享到QQ好友
*/
public void shareToQQ(String title,String description,String openUrl,String imgUrl,int shareType){
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);//消息类型 图文用默认的
params.putString(QQShare.SHARE_TO_QQ_TITLE, title);//标题
params.putString(QQShare.SHARE_TO_QQ_SUMMARY,description);//描述信息
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,openUrl);//这条分享消息被好友点击后的跳转URL。
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,imgUrl);//分享图片的URL或者本地路径
params.putString(QQShare.SHARE_TO_QQ_APP_NAME,getString(R.string.app_name));
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,shareType);//分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮
mTencent.shareToQQ(ShareActivity.this, params, new BaseUIListener(ShareActivity.this));
}
分享到微信的相关操作需要到微信后台注册审核通过之后才能分享,
分享到微信的方法:
/**
* @param title 分享的标题
* @param openUrl 点击分享item打开的网页地址url
* @param description 网页的描述
* @param icon 分享item的图片
* @param requestCode 0表示为分享到微信好友 1表示为分享到朋友圈 2表示微信收藏
*/
public void sendToWeiXin(String title, String openUrl, String description, Bitmap icon, int requestCode) {
//初始化一个WXWebpageObject对象,填写url
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = openUrl;
//Y用WXWebpageObject对象初始化一个WXMediaMessage对象,填写标题、描述
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = title;//网页标题
msg.description = description;//网页描述
msg.setThumbImage(icon);
//构建一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = "supplier";
req.message = msg;
req.scene = requestCode;
api.sendReq(req);
}
https://github.com/sinaweibosdk/weibo_android_sdk
把相关的架包和so文件都要复制过来,so为了将一个不能少
在ShareActivity的onCreate中初始化WeiboShareAPI对象,注册app
/**sina微博*/
mWeiboShareAPI=WeiboShareSDK.createWeiboAPI(this,Constants.SINA_APP_KEY);
// 注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。
// 但该附件栏集成分享权限需要合作申请,详情请查看 Demo 提示
// NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册
mWeiboShareAPI.registerApp();
// 当 Activity 被重新初始化时(该 Activity 处于后台时,可能会由于内存不足被杀掉了),
// 需要调用 {@link IWeiboShareAPI#handleWeiboResponse} 来接收微博客户端返回的数据。
// 执行成功,返回 true,并调用 {@link IWeiboHandler.Response#onResponse};
// 失败返回 false,不调用上述回调
if (savedInstanceState != null) {
mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
}
分享图片到微博:
WeiboMessage weiboMessage = new WeiboMessage();
ImageObject imageObject = new ImageObject();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
imageObject.setImageObject(bitmap);
weiboMessage.mediaObject = imageObject;
//发送请求
SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();
request.transaction = String.valueOf(System.currentTimeMillis());
request.message = weiboMessage;
mWeiboShareAPI.sendRequest(ShareActivity.this, request);
demo下载地址:
http://download.csdn.net/detail/pkandroid/9697731
微信分享到好友、分享到朋友圈、分享到微信收藏、分享到QQ好友、分享到QQ空间、分享到新浪微博
https://github.com/HYVincent/Login