之前项目中集成过多次友盟的分享,当时做完后没有写博客记录,然后现在公司的项目市场是国外主要,用到的都是Facebook分享和Android原生的系统分享,所以也用不到国内社交平台的分享集成,但是今天个人的项目里面需要用到集成友盟了,由于当时没有用博客记笔记详细记录,所以再次集成的时候很多都忘了,之前爬过的坑有的甚至重新爬了一次又,所以感觉有必要认真的做下笔记了!于是有了今天这篇博客~,哈哈

第一步:在友盟开放平台注册账号,创建应用并获取到对应的友盟的key值;

第二步:为自己的应用在常用的社交软件开放平台申请创建应用,并提交审核获取对应的appkey和secret;

第三步:从友盟平台下载对应的友盟的jar包,我这里用的都是精简版的jar包,qq,微信,微博都是用的精简版的jar包,将jar包复制到项目的libs目录下并在build.gradle文件中添加依赖;

第四步:在项目的清单文件AndroidManifest.xml文件中进行各个社交平台的活动配置和友盟key的配置

 <meta-data
            android:name="UMENG_APPKEY"android:value="5a7a6c3fa40fa355170002323" ></meta-data><!--第三方分享  新浪--><activity
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"android:configChanges="keyboardHidden|orientation"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:exported="false"android:screenOrientation="portrait" ></activity><!--<activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"--><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><!--qq精简版--><activity
            android:name="com.umeng.qq.tencent.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="1177678592" />   <-- 填写你在腾讯应用平台申请下来的应用的appid--></intent-filter></activity><activity
            android:name="com.umeng.qq.tencent.AssistActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize"/><activity android:name=".wxapi.WXEntryActivity"/>

第五步:在application类中进行初始化sdk

//注意这里的微信的secret要用签名工具生成md5值复制到这里,注意手机上装的你的应用一定是reslease版本的,否则获取到的md5值正式环境分享时会出问题,这里附上签名工具的下载地址,由于md5值是一样的,我直接用的微博的md5签名工具,这里附上下载地址:
[微博的md5签名工具下载地址](https://github.com/mobileresearch/weibo_android_sdk/blob/master/%E5%BE%AE%E5%8D%9AAndroid%E5%B9%B3%E5%8F%B0SDK%E6%96%87%E6%A1%A3V2.4.0.pdf)//微信开放平台申请下离的应用id和md5签名工具生成的md5值PlatformConfig.setWeixin("wx9b5134440f179efd", "4efdff8ea6cd8070682a3866c0f444ae");//从腾讯开放平台获取你申请的qq分享相关的appid和screct值PlatformConfig.setQQZone("11066785552", "hus3kuqIGq055qUN");//从微博开放平台获取你的appkey和screct值PlatformConfig.setSinaWeibo("1844955595", "2119f6551d01695b6555555693d575", "http://sns.whalecloud.com");

第六步:开始核心的代码部分
我将核心的分享代码封装到了工具类ShareUtil中,便于调用各处:
工具类ShareUtil.kt代码:

class SharerUtil :View.OnClickListener{val TAG = "SharerUtil"private val PERMISSIONS_STORAGE = arrayOf("android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE")private val REQUEST_EXTERNAL_STORAGE = 1var dialog: AlertDialog?= nullvar activity: Activity? = nullvar webUrl:String?= nullvar UMimgUrl:String?= nullvar title:String?= nullvar description:String?= nullconstructor (activity: Activity) {this.activity = activity}companion object{//Android原生系统分享,缺点不能自定义分享的布局open fun shareMore(activity: Activity,url:String){val textIntent = Intent(Intent.ACTION_SEND)textIntent.type = "text/plain"textIntent.putExtra(Intent.EXTRA_TEXT, url)activity!!.startActivity(Intent.createChooser(textIntent, "Share"))}}open fun showShareDialog(webUrl:String,UMimgUrl:String,title:String,description:String) {this.webUrl = webUrlthis.UMimgUrl = UMimgUrlthis.title = titlethis.description = descriptionvar view = LayoutInflater.from(activity).inflate(R.layout.share_public_view, null, false)dialog = AlertDialog.Builder(activity).setView(view).create()view.tv_cancle.setOnClickListener(this)view.ll_shareto_weicheat.setOnClickListener(this)view.ll_jubao_jcdetial.setOnClickListener(this)view.ll_shareto_weicheatRrang.setOnClickListener(this)view.ll_shareto_qq.setOnClickListener(this)view.ll_shareto_weibo.setOnClickListener(this)view.ll_shareto_qqspace.setOnClickListener(this)dialog!!.show()//此处设置位置窗体大小,我这里设置为了手机屏幕宽度的3/4dialog!!.getWindow().setLayout((ScreenUtils.getScreenWidth(activity)),RelativeLayout.LayoutParams.WRAP_CONTENT)}override fun onClick(v: View?) {when(v!!.id){R.id.tv_cancle->{dialog!!.dismiss()}R.id.ll_shareto_weicheat->{initShareType(SHARE_MEDIA.WEIXIN,webUrl,UMimgUrl,title,description)}R.id.ll_shareto_weicheatRrang->{initShareType(SHARE_MEDIA.WEIXIN_CIRCLE, webUrl, UMimgUrl, title, description)}R.id.ll_shareto_qq->{initShareType(SHARE_MEDIA.QQ,webUrl, UMimgUrl, title, description)}R.id.ll_shareto_weibo->{initShareType(SHARE_MEDIA.SINA,webUrl,  UMimgUrl, title, description)}R.id.ll_shareto_qqspace->{initShareType(SHARE_MEDIA.QZONE,webUrl, UMimgUrl, title, description)}R.id.ll_jubao_jcdetial->{}}}private fun initShareType(shareType: SHARE_MEDIA, webUrl: String?, uMimgUrl: String?, title: String?, description: String?) {val thumb2 = UMImage(activity, uMimgUrl!!)val web2 = UMWeb(webUrl)web2.title = title//标题web2.setThumb(thumb2)  //缩略图web2.description = description//描述ShareAction(activity).setPlatform(shareType)//传入平台.withMedia(web2).setCallback(object : UMShareListener {override fun onStart(share_media: SHARE_MEDIA) {Toast.makeText(activity, "分享开始", Toast.LENGTH_LONG).show()}override fun onResult(share_media: SHARE_MEDIA) {Toast.makeText(activity, "成功了", Toast.LENGTH_LONG).show()}override fun onError(share_media: SHARE_MEDIA, throwable: Throwable) {Toast.makeText(activity, "异常:"+throwable.message, Toast.LENGTH_LONG).show()verifyStoragePermissions(activity!!)}override fun onCancel(share_media: SHARE_MEDIA) {Toast.makeText(activity, "取消分享", Toast.LENGTH_LONG).show()}}).share()}//qq分享需要读写sd卡权限,如果没有这个方法分享时会出现异常,实际上这个检查权限的方法应该在分享的activity初始化的生命周期方法里面进行,我在这里也写了,当分享失败的时候会再次检查申请权限fun verifyStoragePermissions(activity: Activity) {try {//检测是否有写的权限val permission = ActivityCompat.checkSelfPermission(activity,"android.permission.WRITE_EXTERNAL_STORAGE")if (permission != PackageManager.PERMISSION_GRANTED) {// 没有写的权限,去申请写的权限,会弹出对话框ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE)}} catch (e: Exception) {e.printStackTrace()}}}

关键调用代码:

//记得在activity的oncreate方法中申请检查读写sd卡的权限,否则会分享异常verifyStoragePermissions(activity!!)//当点击分享的按钮后调用下面方法进行弹出分享对话框布局视图
fun share(){var sharerUtil: SharerUtil? =  SharerUtil(this)sharerUtil!!.showShareDialog("http://www.mingshiapp.top:8080/AllThingArePosible/sharePage1",articleDetailBean?.info?.headerImage!!, articleDetailBean?.info?.title!!,"作者:"+ articleDetailBean?.info?.trends_autor_name!!)}

强调一点记得在调用的activity中重写这个方法,否则会有异常出现

 // QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {super.onActivityResult(requestCode, resultCode, data)UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data)}

然后到这里就集成成功了,集成分享的坑有时候会遇到很多莫名其妙的,如果你也遇到了或者有不明白的地方可以在文章底部留言给我,我看到后会第一时间回复,我们可以一起探讨,交流,学习进步!

友盟分享集成教程(精简版)相关推荐

  1. 新版本友盟分享集成的几点注意事项

    在iOS开发中,社交分享已经是一个常见的功能.当我们需要快速集成多个平台的分享时,一般会选择一些第三方的分享平台,例如友盟分享.友盟分享经过多年的发展,现在推出了新版SDK6.1.相比之前的版本,新版 ...

  2. Android 友盟统计 友盟推送 友盟分享快速集成

    一.友盟统计 1.首先需要到友盟官网 http://mobile.umeng.com/apps注册并且添加新应用,获得Appkey 2.导入SDK,新版SDK支持Android 6.0,http:// ...

  3. flutter友盟分享_集成推送那点事-友盟/Mob-Flutter/FCM

    第 97 次推文 LZ-Says 我们都曾羡慕别人,却忘了,我们也曾是别人羡慕的我们. 推荐直接拉到底阅读原文- 前言 最近的任务呐,真是让人蛋碎一地,各种被锤. 不过比较 nice 的是,推送凑齐了 ...

  4. 【无限互联】集成友盟分享SDK

    集成友盟分享SDK: 友盟注册:http://www.umeng.com/users/sign_up 注册之后登陆账号,点击"添加新应用"完成新应用填写之后,将进入应用管理页面.在 ...

  5. 使用友盟快速集成QQ分享与QQ授权登录

    友盟官方文档 我采用的是手动集成友盟的官方文档.下载SDK进行集成. 解压缩,选择自己需要的文件进行加入到Android Studio中. 由于这里我只需要QQ,那就把QQ文件夹中的所有文件拷贝一份到 ...

  6. ios 分享功能 集成友盟分享

    1.集成友盟分享,需要先注册一个友盟账号,注册地址 友盟开发者平台官网  友盟集成文档 友盟sdk下载地址友盟sdk下载地址 2,成功下载sdk集成后,微信分享需要配置一下 新浪微博 之类到同样配置就 ...

  7. swift3.0友盟分享

    经过(一)的讲解,大家应该可以按照友盟提供的测试账号可以集成友盟分享了,友盟目前集合了18个APP共27种分享,可以授权的有10个App:微信.QQ.新浪微博.腾讯微博.人人网.豆瓣.Facebook ...

  8. Android 友盟分享躺过的几个坑,大坑,坑爹啊

    前言:公司上线了一个项目,做Android 客户端集成友盟分享,在做得过程中,遇到了下面3个问题,希望其他小伙伴注意. ( 友盟在线客服 QQ : 800083942  ) 错误1: 1.错误描述 我 ...

  9. 友盟分享error:包名错误,确认与开放平台包名一致

    分享一下在集成友盟分享时一个坑(RN) 关于集成友盟分享的方法我就不多说,跟着文档solo完全ok 说一下我在Android点击分享时候,正常弹出分享borad,选择对应平台分享时候 一如既往的loa ...

最新文章

  1. s-sgdisk源码分析 “--set-alignment=value分区对齐参数”
  2. Java笔记04-核心类库
  3. 简述container与container-fluid的区别
  4. python爬虫对炒股有没有用_使用python爬虫实现网络股票信息爬取的demo
  5. ARCGIS RUNTIME FOR IOS总结(三)
  6. oracle8i ora 12500,总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历...
  7. SDUT 2170 The Largest SCC bfs+tarjan
  8. Harmony OS — Checkbox多选框
  9. 【VUE】vue安装教程
  10. openairinterface5g+limesdr搭建4G基站
  11. 选拔人才要关注的七个方面
  12. 做什么样的软件才能赚钱?
  13. uniapp—— 微信小程序ios上音频播放没有声音
  14. 火车采集器V9入门之网址采集 实例讲解
  15. “段子手”黄允松的严肃一面:数字化转型是颠覆式创新
  16. 蓝牙通信的简要设计与开发(附加题)
  17. windows云服务器价格_windows云服务器安装(微软云服务器价格)
  18. 当提示“当前帐户被锁定,可能无法登录”时,如何解锁帐户?
  19. 解决IDEA中maven创建web项目时新建无jsp选择项
  20. itoa函数和atoi函数的实现和用法

热门文章

  1. 数据结构实验 六度空间 广搜 前向星
  2. 编程,写代码不是关键。学习人物经验系列(一)
  3. 八个移动产品设计必备网站
  4. 07.微软又一逆天可视化神器——Power BI
  5. 服务器信息备份后如何转移,云服务器到期了怎么迁移数据
  6. Python 的reload()方法
  7. 非常不错的一片关于光耦的文章
  8. cpu(了解了以下8条,没人敢和你忽悠CPU)
  9. 如何在Mac上安装Python
  10. intel cpu计算机硬件架构,intel的cpu分类介绍