网站首页 > 开源技术 正文
在APP中,社会化分享已经成为了一项重要的引流措施,通过分享到QQ微信等社交平台,吸引更多的用户使用APP是一项常见的方案,下面,我们就来一步一步地实现在APP中集成社会化分享的功能
实现步骤
1.首先,你需要在友盟的官网注册申请账号,并创建你自己的APP,这一步比较简单,在这里不再说明,基本上每个安卓开发者都会做,里面也没有什么需要注意的坑,只要按照上面的提示来做就可以了
2.下载最新版的SDK,目前,友盟的分享SDK支持手动集成,这一点需要注意,下载完之后,解压后你会得到相应的文件夹
SDK目录
文件夹对应的功能
按照你的项目,吧解压出来的文件夹里面的东西,全部放在你的项目中的对应的文件夹下就可以了
3.在你的包名下创建文件夹wxapi,并创建类继承WXCallbackActivity(这里一定是包名下,不能是其他任何一个二级目录,否则将会分享失败),支付宝(apshare)和钉钉(ddshare)类似,需要创建相应的文件夹(apshare)和(ddshare),并分别继承(ShareCallbackActivity)和(DingCallBack)
QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加以下代码,获取分享的回调
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }
4.在Android Manifest XML文件中添加相应的配置
新浪
<activity android:name="com.umeng.socialize.media.WBShareCallBackActivity" android:configChanges="keyboardHidden|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:exported="false" > </activity> <activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity" android:configChanges="keyboardHidden|orientation" android:exported="false" android:windowSoftInputMode="adjustResize" > </activity> <activity android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" android:launchMode="singleTask" android:name="com.sina.weibo.sdk.share.WbShareTransActivity"> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
微信
<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
支付宝
<activity android:name=".apshare.ShareEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
钉钉
<activity android:name=".ddshare.DingCallBack" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
QQ(需要更换为你自己的android:scheme)
<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:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/>
分享编辑页(只有豆瓣,人人,腾讯微博,领英,twitter需要):
<activity android:name="com.umeng.socialize.editorpage.ShareActivity" android:theme="@android:style/Theme.NoTitleBar" android:excludeFromRecents="true" />
5.分享因为有时候涉及到图片和视频等,所以需要读写sd卡的权限,虽然官方提供了模板代码.但是在实际的项目中一般都会有加入申请权限的一系列代码,大家可以根据自己的项目中的具体情况去申请,没必要将文档中的所有权限都加入进来,造成对用户的不必要困扰
6.等一切集成完毕之后,你就可以初始化SDK了,初始化的操作一般放在Application中进行
@Override public void onCreate() { super.onCreate(); UMConfigure.init(this,"5a12384aa40fa3551f0001d1" ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0 }
配置平台key
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0"); //豆瓣RENREN平台目前只能在服务器端配置 PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com"); PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf"); PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO"); PlatformConfig.setAlipay("2015111700822536"); PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e"); PlatformConfig.setPinterest("1439206"); PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f"); PlatformConfig.setDing("dingoalmlnohc0wggfedpk"); PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J"); PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a"); PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
6.因为分享需要正式环境下才能使用,为了平时方便开发,需要配置一下签名文件
配置签名文件
7.下面就可以写分享的代码了,你可以写在一个工具类中,方便调用
分享(带面板)
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();
其中umShareListener为回调监听
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(); } };
分享的消息类型
纯文本分享
new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();
图片
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[]);//字节流
多图分享
现在支持多图分享的平台有两个,一个是新浪微博一个是QQ空间,都是最多上传9张图片,新浪微博超过9张不会上传,QQ空间超过九张会上传QQ空间相册。
new ShareAction(ShareDetailActivity.this).withMedias(imagelocal,imagelocal,imagelocall) .setPlatform(share_media) .withText("hello") .setCallback(shareListener).share();
链接
UMWeb web = new UMWeb(Defaultcontent.url); web.setTitle("This is music title");//标题 web.setThumb(thumb); //缩略图 web.setDescription("my description");//描述 new ShareAction(ShareActivity.this) .withMedia(web) .share();
视频
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");//视频的描述
音乐
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();
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();
微信小程序
UMMin umMin = new UMMin(Defaultcontent.url); //兼容低版本的网页链接 umMin.setThumb(imagelocal); // 小程序消息封面图片 umMin.setTitle(Defaultcontent.title); // 小程序消息title umMin.setDescription(Defaultcontent.text); // 小程序消息描述 umMin.setPath("pages/page10007/xxxxxx"); //小程序页面路径 umMin.setUserName("gh_xxxxxxxxxxxx"); // 小程序原始id,在微信平台查询 new ShareAction(ShareDetailActivity.this) .withMedia(umMin) .setPlatform(share_media) .setCallback(shareListener).share();
猜你喜欢
- 2024-10-02 以社会化分享突破 游族旗下mob平台纵深向发展
- 2024-10-02 网络共享网盘推荐(共享云盘推荐)
- 2024-10-02 不少应用软件违规收集个人信息(app违规收集使用个人信息行为)
- 2024-10-02 【紧急通知】关于微信开放平台针对iOS移动应用SDK更新-MobTech
- 2024-10-02 抖音对外开放一键发布API和抖音分享SDK 第三方网站可分享至抖音
- 2024-10-02 微信:第三方App尽快升级微信SDK,将逐步限制旧版的分享功能
- 2024-10-02 2020 Android 集成友盟社会化分享
- 2024-10-02 搭建直播带货平台程序员需要掌握哪些技能和三方账号支持?
- 2024-10-02 睿悦发布智能硬件SDK和VRROM 提高内容开发效率
- 2024-10-02 视频聊天软件开发都需要用到哪些三方服务?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)