集成友盟分享-社会化组件
2016-11-14 18:56
417 查看
之前做友盟分享,真的是坑的不轻啊
首先,我是到http://dev.umeng.com/social/android/sdk-download下载的SDK,本人下载的是友盟最新的精简版
如果有人想看官方的也可以到友盟的官方文档;
首先,集成之前,我们的准备工作,一般我们做项目,也就是分享到微信,朋友圈,QQ,QQ空间,新浪微博等,那么我们就要到各个开发平台去申请注册,并创建一个应用,记得一定的保存好各个平台的生成的APPKey和AppID,到我们分享的时候会用到的,尤其是微信的开放平台,AppStrect值,只是在申请账号之后,马上要复制下来,如果错过了,后续是打不开的;
注意:在这里,我要特地提一下,我们注册微信是需要我们的包名,和签名的,包名就是我们项目的包名如下:
而签名也是相当重要的,想当年我也是深受其害啊,那么我们得去微信的开发平台去下载签名工具;将你要运行的项目打包先运行到手机上,记得一定是打包后的项目,然后再运行你下载的签名工具,把你项目的包名(如上图所示)输入到提示框中,生成签名,复制下来,填入微信的平台,包名一定要跟你打包运行的项目包名一致,否则无法生成签名,生成的签名也必须跟填入微信的平台的签名一致,否则,无法分享,如果是第一次申请微信的账号,会有一个礼拜的审核期,审核期间是不能用的。
好了,现在我们也准备开始真正的集成友盟了
第一,我们把我们下载的友盟SDK打开,将main和platforms里面的资源文件复制到我们的项目当中,根据我们的寻求选择不同的平台,
如果大家嫌一个个打开复制麻烦,就用另一种比较简单的方法,大家可以看到我们下载的SDK有一个Jar包如下:
选中,右键,打开,会弹出一个窗口,大家可以先选中,我们想要分享的平台和开发工具,点击“OK”
操作之后,我们会看到,我们的SDK中多了个文件
打开这个文件,把相应的文件夹中的资源复制的我们自己的项目当中
在我们项目的包名下 创建一个包为wxapi的,并在这个包下创建类WXEntryActivity继承
用来显示微信分享的回调,如:你的包名如果是com.exempl那么你的类就建在com.exempl.wxapi下;
第二,开始配置我们的项目清单文件吧
首页,是友盟需要的权限
然后就是我们个个平台的,不要复制本人的AppKey值,因为包名不同,就算你们复制去,也是不能用的。把下面Value改为自己的Key值
QQ
注意:其中如下,你们要将后面的数据改为你们自己的APPID,要跟你们代码中保持一致
微信
友盟的分享编辑页面
因为我们用的是精简版的。所以不需要新浪微博的;
第三,是我们的代码中的了
找到我们的程序入口,Application,我们可以自定义一个App继承自Application,在类中添加上自己的各个平台,把下面的都换成自己的
然后在方法中初始化
那么现在最基本的都已经完成了,让我们来实现分享吧
在我们要做分享的页面,先获得分享分服务对象
以及我们自定义分享的标题,图片,内容和URL
然后,根据需求为他们赋值,图片可以是本地的,当然也可以分享视频,音频之类的,如果有兴趣的话可以到友盟官方文档去学习更多
然后,点击弹出,分享面板,(友盟自带的,如果用自己写的Dialog做分享面板,则不需要)
如果大家想自己写分享的面板来调用分享的方法也很简单
在我们调用分享面板的地方,弹出我们自己的的面板,根据不同的监听,实现不同平台的分享
QQ
QQ空间
微信
微信朋友圈
新浪微博
之后,别忘了,还有友盟分享回调的监听,必不可少的!
还有友盟分享的回跳方法
让后就可以运行了,如果大家看了我的博客有遇到什么问题的话,可以私信我,也可以评论或留言!!
首先,我是到http://dev.umeng.com/social/android/sdk-download下载的SDK,本人下载的是友盟最新的精简版
如果有人想看官方的也可以到友盟的官方文档;
首先,集成之前,我们的准备工作,一般我们做项目,也就是分享到微信,朋友圈,QQ,QQ空间,新浪微博等,那么我们就要到各个开发平台去申请注册,并创建一个应用,记得一定的保存好各个平台的生成的APPKey和AppID,到我们分享的时候会用到的,尤其是微信的开放平台,AppStrect值,只是在申请账号之后,马上要复制下来,如果错过了,后续是打不开的;
注意:在这里,我要特地提一下,我们注册微信是需要我们的包名,和签名的,包名就是我们项目的包名如下:
而签名也是相当重要的,想当年我也是深受其害啊,那么我们得去微信的开发平台去下载签名工具;将你要运行的项目打包先运行到手机上,记得一定是打包后的项目,然后再运行你下载的签名工具,把你项目的包名(如上图所示)输入到提示框中,生成签名,复制下来,填入微信的平台,包名一定要跟你打包运行的项目包名一致,否则无法生成签名,生成的签名也必须跟填入微信的平台的签名一致,否则,无法分享,如果是第一次申请微信的账号,会有一个礼拜的审核期,审核期间是不能用的。
好了,现在我们也准备开始真正的集成友盟了
第一,我们把我们下载的友盟SDK打开,将main和platforms里面的资源文件复制到我们的项目当中,根据我们的寻求选择不同的平台,
如果大家嫌一个个打开复制麻烦,就用另一种比较简单的方法,大家可以看到我们下载的SDK有一个Jar包如下:
选中,右键,打开,会弹出一个窗口,大家可以先选中,我们想要分享的平台和开发工具,点击“OK”
操作之后,我们会看到,我们的SDK中多了个文件
打开这个文件,把相应的文件夹中的资源复制的我们自己的项目当中
在我们项目的包名下 创建一个包为wxapi的,并在这个包下创建类WXEntryActivity继承
WXCallbackActivity
用来显示微信分享的回调,如:你的包名如果是com.exempl那么你的类就建在com.exempl.wxapi下;
第二,开始配置我们的项目清单文件吧
首页,是友盟需要的权限
<!-- 友盟分享需要的权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- QQ、QQ空间所需权限 --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.SET_DEBUG_APP" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
然后就是我们个个平台的,不要复制本人的AppKey值,因为包名不同,就算你们复制去,也是不能用的。把下面Value改为自己的Key值
<!-- 友盟APPKey --> <meta-data android:name="UMENG_APPKEY" android:value="57fc5cfae0f55a3ede00057f" />
<!-- QQ的Activity注册 --> <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" /> <!-- 这里需要配置自己QQ互联的AppID:tencentXXXXXX,和代码中保持一致 --> <data android:scheme="tencent1105673065" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
注意:其中如下,你们要将后面的数据改为你们自己的APPID,要跟你们代码中保持一致
<data android:scheme="tencent1105673065" />
微信
<!-- 微信回调activity --> <!-- 微信 --> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
友盟的分享编辑页面
<!-- 分享编辑页 --> <activity android:name="com.umeng.socialize.editorpage.ShareActivity" android:excludeFromRecents="true" android:theme="@style/Theme.UMDefault" />
因为我们用的是精简版的。所以不需要新浪微博的;
第三,是我们的代码中的了
找到我们的程序入口,Application,我们可以自定义一个App继承自Application,在类中添加上自己的各个平台,把下面的都换成自己的
{ //微信 PlatformConfig.setWeixin("wxc5fab299a262583c", "a95816e54706b9977e787e2a743f1402"); //新浪微博 PlatformConfig.setSinaWeibo("3586667763", "23030343394e0d5ac7aac0646c802f29"); //QQ PlatformConfig.setQQZone("1105673065", "7tAnzz96J2PHijNW"); //如果微博分享不成功,出现文件不存在c8998错误,可以去微博开放平台检查是否申请该项目的分享功能,并且确认 /*Config.REDIRECT_URL="http://sns.whalecloud.com/sina2/callback";*///需要替换成自己的回调地址 }
然后在方法中初始化
@Override public void onCreate() { super.onCreate(); //开启友盟 UMShareAPI.get(this); }
那么现在最基本的都已经完成了,让我们来实现分享吧
在我们要做分享的页面,先获得分享分服务对象
/*友盟分享服务*/ public ArrayList<SnsPlatform> platforms = new ArrayList<SnsPlatform>();
以及我们自定义分享的标题,图片,内容和URL
//分享的标题 String fenxiang_title; //分的内容 String fenxiang_content; //分享的URL String fenxinag_url; //分享的图片 UMImage image;
然后,根据需求为他们赋值,图片可以是本地的,当然也可以分享视频,音频之类的,如果有兴趣的话可以到友盟官方文档去学习更多
//设置友盟分享的内容 fenxiang_title="友盟分享标题"; fenxiang_content="友盟分享内容"; fenxinag_url="www.baidu.com"; image=new UMImage(Home_ReDian_Informetion_Activity.this,R.mipmap.app_logo);
然后,点击弹出,分享面板,(友盟自带的,如果用自己写的Dialog做分享面板,则不需要)
new ShareAction(this).setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.SINA) .withTitle(fenxiang_title) .withText(fenxiang_content) .withMedia(image) .withTargetUrl(fenxinag_url) .setCallback(umShareListener) .open();
如果大家想自己写分享的面板来调用分享的方法也很简单
在我们调用分享面板的地方,弹出我们自己的的面板,根据不同的监听,实现不同平台的分享
new ShareAction(Home_ReDian_Informetion_Activity.this).setPlatform(SHARE_MEDIA.QQ).setCallback(umShareListener) .withExtra(image) .withTargetUrl(fenxinag_url) .withTitle(fenxiang_title) .withText(fenxiang_content) .share();
QQ空间
new ShareAction(Home_ReDian_Informetion_Activity.this).setPlatform(SHARE_MEDIA.QZONE).setCallback(umShareListener) .withExtra(image) .withTargetUrl(fenxinag_url) .withTitle(fenxiang_title) .withText(fenxiang_content) .share();
微信
new ShareAction(Home_ReDian_Informetion_Activity.this).setPlatform(SHARE_MEDIA.WEIXIN).setCallback(umShareListener) .withExtra(image) .withTargetUrl(fenxinag_url) .withTitle(fenxiang_title) .withText(fenxiang_content) .share();
微信朋友圈
new ShareAction(Home_ReDian_Informetion_Activity.this).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE).setCallback(umShareListener) .withExtra(image) .withTargetUrl(fenxinag_url) .withTitle(fenxiang_title) .withText(fenxiang_content) .share();
新浪微博
new ShareAction(Home_ReDian_Informetion_Activity.this).setPlatform(SHARE_MEDIA.SINA).setCallback(umShareListener) .withExtra(image) .withTargetUrl(fenxinag_url) .withTitle(fenxiang_title) .withText(fenxiang_content) .share();
之后,别忘了,还有友盟分享回调的监听,必不可少的!
private UMShareListener umShareListener = new UMShareListener() { @Override public void onResult(SHARE_MEDIA platform) { if(platform.name().equals("WEIXIN_FAVORITE")){ Toast.makeText(Home_ReDian_Informetion_Activity.this,platform + " 收藏成功啦",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(Home_ReDian_Informetion_Activity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show(); } } @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(Home_ReDian_Informetion_Activity.this,platform + " 分享失败啦", Toast.LENGTH_SHORT).show(); } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(Home_ReDian_Informetion_Activity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show(); } };
还有友盟分享的回跳方法
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }
让后就可以运行了,如果大家看了我的博客有遇到什么问题的话,可以私信我,也可以评论或留言!!
相关文章推荐
- 集成友盟社会化分享组件
- Android Cocos2d-x游戏集成友盟社会化组件分享功能
- IOS 开发 友盟分享-社会化组件SDK v6.0.2-集成指南
- Android Cocos2d-x游戏集成友盟社会化组件分享功能
- Android集成友盟社会化分享组件 ---- 分享到新浪、微信、QQ空间、腾讯微博等平台
- Android Cocos2d-x游戏集成友盟社会化组件分享功能
- Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件
- 【友盟 社会化组件之一】集成友盟的分享接口(微信、qq、新浪微博)
- Android Cocos2d-x游戏集成友盟社会化组件分享功能
- Android集成友盟社会化分享组件 ---- 分享到新浪、微信、QQ空间、腾讯微博等平台
- Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件
- IOS友盟 社会化分享 > 社会化iOS组件 > 分享集成
- Android集成友盟社会化分享功能
- android 分享------使用友盟社会化组件
- AndriodStudio集成友盟社会化分享5.0SDK出现的问题
- 友盟社会化组件集成——一个小白的小结
- 学习笔记之——友盟社会化组件精简版集成qq微信新浪微博
- 第三方集成之社会化分享组件
- cocos2dx集成友盟社会化分享图片崩溃问题
- 友盟的社会化分享和第三方登录集成步骤