友盟分享使用与踩坑记录

1,453 阅读2分钟

       前言:公司要做第三方分享功能,由于时间比较紧急,所以就采用了第三方,本次使用的是友盟分享,由于是第一次使用这个分享,踩了不少坑,于是写下这篇博客来帮助其他人少踩坑也是给自己加深记忆.

使用方法

1. 去官网下载Demo进行参考(github.com/umeng/Multi…)

2. 下载所需分享的第三方社会化分享SDK(developer.umeng.com/sdk?spm=a21…)

3. 下载SDK集成辅助工具并生成moudle(developer.umeng.com/tools)

4. 去自己的项目导入这个moudle

5. 接下来就是去看官方Demo来进行对应的操作啦,由于不同的分享平台可能配置有所不同,所以就不一一细讲了,大家看官方Demo和说明文档应该不会有什么太大的问题,有问题可以评论一下,我看到肯定会答复的(官网说明文档链接developer.umeng.com/docs/66632/…)

踩坑记录

  1. 微信需要建立一个空Activity继承他的回调,如果大家根据他的规范操作了还有这个报错的话,大家记住一定要放在你的主moudle中,不然他是找不到这个Activity的,仔细检查清单文件的Activity是否路径正确,当然,如果要完全模块化或者是做SDK的话,可以使用别名,类似于这样:

     
    
     <activity android:name="wxapi.WXEntryActivity"
         android:configChanges="keyboardHidden|orientation|screenSize"
         android:exported="true"
         android:theme="@android:style/Theme.Translucent.NoTitleBar"
         />
     <activity-alias
         android:name="${applicationId}.wxapi.WXEntryActivity"
         android:targetActivity="wxapi.WXEntryActivity"/>
    
  2. 友盟面板的分享应用字体是没有国际化的,如果需要国际化的或者是分享面板的定制不能满足需求的可以自定义面板,然后参考官方demo的 SharePlatformActivity 与 ShareDetailActivity 实现点击自定义dialog的item跳转到对应的分享

  3. 友盟分享的错误码也是没有国际化的,如果是产品需要自定义Toast文字可以这样

    String text = "";
     if (platform != SHARE_MEDIA.MORE && platform != SHARE_MEDIA.SMS
             && platform != SHARE_MEDIA.EMAIL
             && platform != SHARE_MEDIA.FLICKR
             && platform != SHARE_MEDIA.FOURSQUARE
             && platform != SHARE_MEDIA.TUMBLR
             && platform != SHARE_MEDIA.POCKET
             && platform != SHARE_MEDIA.PINTEREST
    
             && platform != SHARE_MEDIA.INSTAGRAM
             && platform != SHARE_MEDIA.GOOGLEPLUS
             && platform != SHARE_MEDIA.YNOTE
             && platform != SHARE_MEDIA.EVERNOTE) {
         if (platform.toString().equals("WEIXIN")) {
             text = getResources().getString(R.string.wechat);
         } else if (platform.toString().equals("WEIXIN_CIRCLE")) {
             text = getResources().getString(R.string.wechat);
         } else if (platform.toString().equals("QQ")) {
             text = getResources().getString(R.string.qq);
         } else if (platform.toString().equals("QZONE")) {
             text = getResources().getString(R.string.q_zone);
         }
         if (throwable.toString().contains("2008")) {
             ToastUtil.showShort(String.format(getResources().getString(R.string.not_installed), text));
         }
     }
    
4. 为了包的体积比较小而且没有需要实现对应功能,我下载的都是精简版,目前发现分享只能是那个官方QQ,轻聊版啥的还是提示未安装改应用,这个目前还没有解决,有大佬知道可以告知一下,谢谢!!!