umeng(友盟)实现第三方登录和分享详解之分享
来源:互联网 发布:北京天际网络 编辑:程序博客网 时间:2024/05/31 18:30
一、介绍
在上文中umeng(友盟)实现第三方登录和分享详解之登录详解 已经很详细详尽的讲解了umeng分享和登录的配置,还有登录的具体操作。
因为篇幅太长,所以分享想另外写一篇。
umeng分享和登录配置相同,所以不再赘述上述的配置,
大概流程如下:
1、各大平台申请appkey
2、copy你所需要的平台的jar包和资源文件(图片布局等)。
3、Android Manifest XML中配置权限和申明各个平台所需activity,umeng的appkey也要配置。
4、建一个application作为程序入口,在里面配置申请到的appkey,例如PlatformConfig.setQQZone(“100424468”, “c7394704798a158208a74ab60104f0ba”);
5、在umeng后台配置你申请到的appkey。
6、在application的oncreate里面进行umeng初始化,UMShareAPI.get(this);
二、分享实现
分享分为有分享面板和无分享面板的。
1、这是基础的形式,具体的根据分享内容不同而不同
有分享面板的
new ShareAction(MainActivity.this) .withText("hello") .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN) .setCallback(umShareListener) .open();
无分享面板的
new ShareAction(MainActivity.this).setPlatform(SHARE_MEDIA.QQ)//传入平台.withText("hello")//分享内容.setCallback(umShareListener)//回调监听器.share();
都是实例化的new ShareAction ,这个操作在你点击分享按钮的监听事件中实现。
withText(“”)是你分享的内容
setCallback是回调的监听
讲一下区别,无分享面板的,就直接.setPlatform(SHARE_MEDIA.QQ),直接传入相对应平台就可以调用。
有分享面板的,需要在setDisplayList中具体枚举所有的(按照顺序)分享平台。
2、具体实现分享内容
1)纯文本分享
new ShareAction(ShareActivity.this).withText("hello").share();
.withText(“hello”)里面填写你要分享的内容就好了
2)图片分享
private UMImage imageurl,imagelocal; 图片推荐资源图片和网络图片 imageurl = new UMImage(this,图片url); imageurl.setThumb(new UMImage(this, R.drawable.thumb)); // imagelocal = new UMImage(this,R.drawable.logo,umImageMark); imagelocal = new UMImage(this,R.drawable.logo); imagelocal.setThumb(new UMImage(this, R.drawable.thumb));
new ShareAction(ShareDetailActivity.this).withMedia(imagelocal ) .setPlatform(share_media) .setCallback(shareListener).share();
如果是本地图片就用withMedia(imagelocal ),网络图片withMedia(imageurl )
一般会设置缩略图
UMImage thumb = new UMImage(this, R.drawable.thumb); imagelocal .setThumb(thumb);
ps:设置图片位置:
UMImageMark umImageMark = new UMImageMark(); umImageMark.setGravity(Gravity.BOTTOM | Gravity.RIGHT); umImageMark.setMarkBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.umsocial_defaultwatermark));``当然图片资源还有UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片UMImage image = new UMImage(ShareActivity.this, file);//本地文件UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流
new ShareAction(ShareDetailActivity.this).withText(Defaultcontent.text) .withMedia(imagelocal) .setPlatform(share_media) .setCallback(shareListener).share();
4)图文加链接
UMWeb web = new UMWeb(Defaultcontent.url); web.setTitle("This is music title");//标题 web.setThumb(thumb); //缩略图,可以本地图片,也可以网络图片 web.setDescription("my description");//描述
然后调用将这个参数设置到ShareAction中:
new ShareAction(ShareActivity.this) .withMedia(web) .share();
5)视频分享
视频只能使用网络视频:
UMVideo video = new UMVideo(videourl);video.setTitle("This is music title");//视频的标题video.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//视频的缩略图video.setDescription("my description");//视频的描述
建立好之后可以进行分享:
new ShareAction(ShareActivity.this).withText("hello").withMedia(video).share();
6)音乐分享
音乐只能使用网络音乐:
UMusic music = new UMusic(musicurl);//音乐的播放链接music.setTitle("This is music title");//音乐的标题music.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//音乐的缩略图music.setDescription("my description");//音乐的描述music.setmTargetUrl(Defaultcontent.url);//音乐的跳转链接
建立好之后可以进行分享:
new ShareAction(ShareActivity.this) .withMedia(music) .share();
7)gif
目前只有微信好友分享支持Emoji表情,其他平台暂不支持
UMEmoji emoji = new UMEmoji(this,"http://img5.imgtn.bdimg.com/it/u=2749190246,3857616763&fm=21&gp=0.jpg");emoji.setThumb(new UMImage(this, R.drawable.thumb));new ShareAction(ShareActivity.this) .withMedia(emoji) .share();
8)微信小程序
目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持:
UMMin umMin = new UMMin(Defaultcontent.url);umMin.setThumb(imagelocal);umMin.setTitle(Defaultcontent.title);umMin.setDescription(Defaultcontent.text);umMin.setPath("pages/page10007/xxxxxx");umMin.setUserName("xx_xxx");new ShareAction(ShareDetailActivity.this) .withMedia(umMin) .setPlatform(share_media) .setCallback(shareListener) .share();
emoji = new UMEmoji(this,”http://img5.imgtn.bdimg.com/it/u=2749190246,3857616763&fm=21&gp=0.jpg“);
emoji.setThumb(new UMImage(this, R.drawable.thumb));
9)分享文件
new ShareAction(ShareDetailActivity.this) .withFile(file) .withText(Defaultcontent.text) .withSubject(Defaultcontent.title) .setPlatform(share_media) .setCallback(shareListener).share();
file = new File(this.getFilesDir()+"test.txt"); if (!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } if (SocializeUtils.File2byte(file).length<=0){ String content = "U-share分享"; byte[] contentInBytes = content.getBytes(); try { FileOutputStream fop = new FileOutputStream(file); fop.write(contentInBytes); fop.flush(); fop.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
10)有面板的自定义面板
/*增加自定义按钮的分享面板*/
mShareAction = new ShareAction(ShareMenuActivity.this).setDisplayList( SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.WEIXIN_FAVORITE, SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.ALIPAY, SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN, SHARE_MEDIA.SMS, SHARE_MEDIA.EMAIL, SHARE_MEDIA.YNOTE, SHARE_MEDIA.EVERNOTE, SHARE_MEDIA.LAIWANG, SHARE_MEDIA.LAIWANG_DYNAMIC, SHARE_MEDIA.LINKEDIN, SHARE_MEDIA.YIXIN, SHARE_MEDIA.YIXIN_CIRCLE, SHARE_MEDIA.TENCENT, SHARE_MEDIA.FACEBOOK, SHARE_MEDIA.TWITTER, SHARE_MEDIA.WHATSAPP, SHARE_MEDIA.GOOGLEPLUS, SHARE_MEDIA.LINE, SHARE_MEDIA.INSTAGRAM, SHARE_MEDIA.KAKAO, SHARE_MEDIA.PINTEREST, SHARE_MEDIA.POCKET, SHARE_MEDIA.TUMBLR, SHARE_MEDIA.FLICKR, SHARE_MEDIA.FOURSQUARE, SHARE_MEDIA.MORE) .addButton("umeng_sharebutton_copy", "umeng_sharebutton_copy", "umeng_socialize_copy", "umeng_socialize_copy") .addButton("umeng_sharebutton_copyurl", "umeng_sharebutton_copyurl", "umeng_socialize_copyurl", "umeng_socialize_copyurl") .setShareboardclickCallback(new ShareBoardlistener() { @Override public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) { if (snsPlatform.mShowWord.equals("umeng_sharebutton_copy")) { Toast.makeText(ShareMenuActivity.this, "复制文本按钮", Toast.LENGTH_LONG).show(); } else if (snsPlatform.mShowWord.equals("umeng_sharebutton_copyurl")) { Toast.makeText(ShareMenuActivity.this, "复制链接按钮", Toast.LENGTH_LONG).show(); }else if(share_media == SHARE_MEDIA.SMS) { new ShareAction(ShareMenuActivity.this).withText("来自分享面板标题") .setPlatform(share_media) .setCallback(mShareListener) .share(); }else { UMWeb web = new UMWeb(Defaultcontent.url); web.setTitle("来自分享面板标题"); web.setDescription("来自分享面板内容"); web.setThumb(new UMImage(ShareMenuActivity.this, R.drawable.logo)); new ShareAction(ShareMenuActivity.this).withMedia(web) .setPlatform(share_media) .setCallback(mShareListener) .share(); } } });
分享面板监听
private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {
@Overridepublic void onclick(SnsPlatform snsPlatform,SHARE_MEDIA share_media) { if (share_media==null){ //根据key来区分自定义按钮的类型,并进行对应的操作 if (snsPlatform.mKeyword.equals("umeng_sharebutton_custom")){ Toast.makeText(ShareActivity.this,"add button success",Toast.LENGTH_LONG).show(); } } else {//社交平台的分享行为 new ShareAction(ShareActivity.this) .setPlatform(share_media) .setCallback(umShareListener) .withText("多平台分享") .share(); }}
};
3、分享都需要回调和监听
private UMShareListener shareListener = new UMShareListener() { /** * @descrption 分享开始的回调 * @param platform 平台类型 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @descrption 分享成功的回调 * @param platform 平台类型 */ @Override public void onResult(SHARE_MEDIA platform) { Toast.makeText(ShareDetailActivity.this,"成功了",Toast.LENGTH_LONG).show(); } /** * @descrption 分享失败的回调 * @param platform 平台类型 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(ShareDetailActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show(); } /** * @descrption 分享取消的回调 * @param platform 平台类型 */ @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(ShareDetailActivity.this,"取消了",Toast.LENGTH_LONG).show(); } };
还需要在分享的activity加入
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data); }
为了防止内存泄漏,我们通常要:
@Overrideprotected void onDestroy() { super.onDestroy(); UMShareAPI.get(this).release();}
三、后记
大概就是这些了,写完之后发现自己写的也很烂。还有很多高级功能没写,不过时间有限,大家见谅吧。不清楚的地方大家一起交流,互相学习,哈哈。
umeng(友盟)实现第三方登录和分享详解之登录详解
- umeng(友盟)实现第三方登录和分享详解之分享
- umeng(友盟)实现第三方登录和分享详解之登录详解
- umeng第三方登录,分享
- Umeng分享/第三方授权登录
- ShareSDK实现第三方登录和分享
- ShareSDK 分享和第三方登录实现
- 分享和第三方登录
- 第三方登录和分享
- 第三方登录和分享
- 第三方登录和分享
- 第三方登录和分享
- 第三方登录+分享();
- 第三方登录分享
- 第三方登录 分享
- 第三方登录/分享
- 第三方登录+分享
- 第三方登录分享
- 使用Share Sdk 实现第三方登录和分享
- python with语句
- 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听
- 中式装修木雕花格有哪些特点, 中式装修木雕花格寓意
- configure配置安装详解
- android开发,如何实现通过上拉由一个activity切换到另一个activity
- umeng(友盟)实现第三方登录和分享详解之分享
- Eclipse 常用快捷键
- Ubuntu16.04LTS安装zsh+oh-my-zsh+autojump
- Video.js参考
- 一篇文章,教你学会Git
- 今日头条的主类
- POJ 3694 Network tarjan+LCA
- SpringMVC笔记(七)RESTFul风格的SringMVC
- 关于算法1--排序算法