Xamarin.Android 绑定友盟社会化分享组件
Xamarin.Android 绑定友盟社会化分享组件
最近在开发博客园Android App的时候需要用到友盟社会化分享组件,在github上搜了一下都没有找到最新版本绑定好的项目,就自己动手来绑定一个最新版本的友盟社会化分享组件(文章发布时的最新版为v6.4.3)。
下载友盟Android版SDK
友盟社会化分享组件 v6.4.3
本文只使用到微信,QQ,新浪微博,故只下载了精简版
创建绑定项目
创建步骤如图所示:


添加友盟SDK的jar包到绑定项目的Jars文件夹下
添加下载的友盟SDK项目中main,platforms,shareboard,shareview文件夹中的jar包到绑定项目的Jars文件夹下,如图示:


修改所有jar包的属性EmbeddedJar,如图示:

生成项目
全部修改好之后,生成项目,出现一大堆错误,先别急,看一下都有些什么错误。

好了,双击第一个错误,打开后发现UMImageMark类竟然继承的是自己,这应该就是错误的源头了。

然后我们把UMImageMark继承的类改为Java.Lang.Object试试,ok,错误消失了。

但是这样改是没有用的,因为这已经是生成好的代码了,要改就只能在源头上更改了,怎么办呢? 打开Transforms文件夹下的Metadata.xml文件,在这里编写修改的代码就行了。

但是怎么修改UMImageMark类的继承类呢?按下面的方式添加一行代码就搞定了。
<attr path="/api/package[@name='com.umeng.social.tool']/class[@name='UMImageMark']" name="extends">Java.Lang.Object</attr>
然后再生成一下,看有没有效果。

上面的错误没有了,说明成功了。可是还是有好多错误。接下来看下一个错误。双击打开第一个错误,发现CancelEventArgs类是一个分布类再两个文件中存在,google一下发现是因为IUMShareListener接口和IUMAuthListener接口存在相同的方法,所以绑定的时候会生成相同的类。好了,知道了原因就好办了,只要把其中一个接口中的方法名字改一下就好了,代码如下:
<attr path="/api/package[@name='com.umeng.socialize']/interface[@name='UMAuthListener']/method[@name='onCancel']" name="managedName"> OnAuthCancel </attr>
<attr path="/api/package[@name='com.umeng.socialize']/interface[@name='UMAuthListener']/method[@name='onComplete']" name="managedName"> OnAuthComplete </attr>
<attr path="/api/package[@name='com.umeng.socialize']/interface[@name='UMAuthListener']/method[@name='onError']" name="managedName"> OnAuthError </attr>
<attr path="/api/package[@name='com.umeng.socialize']/interface[@name='UMAuthListener']/method[@name='onStart']" name="managedName"> OnAuthStart </attr>
重新生成一下。

Good,成功了,只剩下3个错误了。
下一个错误一看就知道是因为修饰符的原因造成的,把继承类的这个方法修饰符protected改成public就可以了,代码:
<attr path="/api/package[@name='com.umeng.socialize.sina.params']/class[@name='BrowserRequestParamBase']/method[@name='onCreateRequestParamBundle' and count(parameter)=1 and parameter[1][@type='android.os.Bundle']]" name="visibility">public</attr>
重新生成一下。

好了,还有2个错误。错误提示说“UMShareAPI.InitThread”不实现继承的抽象成员“QueuedWork.UMAsyncTask.DoInBackground()”,打开发现已经有了DoInBackground方法了,但是没有override关键字修饰。

怎么办呢,只能新建一个UMShareAPI分布类来重写这个方法了。在Additions文件夹下新建一个UMShareAPI类,注意修改命名空间为Com.Umeng.Socialize,然后重写DoInBackground方法。由于原来已经有了一个叫DoInBackground的方法,所以需要把原来的方法名修改成DoInBackgrounds就搞定了,代码:
namespace Com.Umeng.Socialize { public partial class UMShareAPI { public partial class InitThread : global::Com.Umeng.Socialize.Common.QueuedWork.UMAsyncTask { protected override Java.Lang.Object DoInBackground() { return DoInBackgrounds(); } } } }
<attr path="/api/package[@name='com.umeng.socialize']/class[@name='UMShareAPI.InitThread']/method[@name='doInBackground' and count(parameter)=0]" name="name">DoInBackgrounds</attr>
保存后重新生成一下,搞定了。

最后一个错误是类名和属性名冲突了,修改一下类名就行了。
<attr path="/api/package[@name='com.umeng.socialize.utils']/class[@name='Log']/field[@name='LOG']" name="name">Logs</attr>
重新生成。搞定。大功告成。
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
最后
下载地址
这个项目中是我在使用Xamarin.Android的时候自己用到的绑定库,包含了友盟统计,友盟社会化分享,讯飞版本自动更新。
Xamarin.Android 绑定友盟社会化分享组件的更多相关文章
- Android集成友盟社会化分享功能
1. 产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪 ...
- iOS快速集成友盟社会化分享功能(v6.1.1)
1. U-Share SDK集成 1.1 下载U-Share SDK 通过iOS社会化组件选择所需的社交平台后进行下载,下载链接http://dev.umeng.com/social/ios/sdk ...
- Android集成友盟facebook分享
在项目中需要将图片和视频分享到社交平台,所以集成了友盟分享.在集成facebook分享的时候走了不少弯路,现在将过程记录下来. 1.先将友盟facebook的jar包复制到项目的libs文件夹下. 2 ...
- React Native中集成友盟社会化分享-----童叟无欺
1.下载所需的jar,下载地址https://developer.umeng.com/sdk/reactnative?spm=a211g2.211692.0.0.28967d238GW6mC 2.将以 ...
- iOS友盟社会化分享U-Share分享面板不显示的问题(基本配置没有错误)
//要先是window可视化 [self.window makeKeyAndVisible]; //添加友盟分享[[UMSocialManager defaultManager] openLog:YE ...
- cocos2dx集成友盟社会化分享图片崩溃问题
本人不懂oc,一步一步按照友盟的文档做,好不容易把分享做好了,结果在 分享图片的时候宕掉了.各种测试,搞了一下午终于搞定了. 如下是友盟文档的做法,错误就在[UIImage imageNamed:@& ...
- IOS开发之——友盟社会化分享UMSocial_SDK的使用
友盟第三方官方网址:http://dev.umeng.com/social/ios/quick-integration
- iOS开发怎么样做第三方登陆(友盟社会化分享)
基于前一篇文章 自定义UI后 实现如下代码 即可 //第三方登陆 // UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformMa ...
- Android 友盟社会化组件-分享实现
本文章链接地址:http://dev.umeng.com/social/android/share/quick-integration 分享快速集成 1 产品概述 友盟社会化组件,可以让移动应用快速具 ...
随机推荐
- 3101: N皇后
3101: N皇后 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 88 Solved: 41[Submit][S ...
- Linux基础命令操作实例
1.开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 2.使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用快捷键Ctrl+Alt+F2切换到终 ...
- 手机端rem如何适配_rem详解及使用方法
什么是rem 在我看来,rem就是1rem单位就等于html节点fontsize的像素值.所以改变html节点的fontsize是最为关键的一步.根据手机宽度改变相对大小就可以实现自适应了,就不用什么 ...
- 分享小知识:善用Group By排序
以下列举了公用表/临时表/聚合函数三个因素为例子(覆盖索引因素除外,有利用此类索引都会以索引顺序) 环境: Microsoft SQL Server 2014 (SP1-GDR) (KB319472 ...
- 【Java基础】通过getResourceAsStream() 加载资源文件
Class.getResourceAsStream(String path) path不以"/"开头时,默认是从当前类所在的包下面获取资源 path以"/"开头 ...
- Modbus通信协议的压力测试
最近物联网都比较的火,因此,特别为各位兄弟姐妹们,奉上一款Mobus协议的测试软件,可以用来做设备的压力测试,和通信测试. 起初软件开发缘由是我们最近在开发一款设备,需要将多个DS18B20并联起来, ...
- iOS 将对象的属性和属性值拆分成key、value,通过字符串key来获取该属性的值
这篇博客光看标题或许就会产生疑问,某个对象,只要它存在某个属性,且值不是空的,不就能直接用点方法获取吗,为什么要拆分成key和value多此一举呢?下面,我用一个例子告诉大家,既然这方法是存在的,那就 ...
- HTTP相关整理(上)
这次整理HTTP相关知识点的初衷是因为项目中有大量与网络请求相关的知识细节点,所以这次整理的更多的是日常中用得到的点(参考图解HTTP),另外给打算做FE的新人们一些建议:多重视网络这方面的知识.文章 ...
- 利用<meta http-equiv="refresh" content="0;URL=?id='.$id.'" />一条一条的更新数据
<meta http-equiv="refresh" content="0;URL=?id='.$id.'" /> 解释:页面定时刷新,后面加url ...
- MAT(Memory Analyzer Tool)使用心得
起因:最近在跟踪产品的性能问题,期间主要问题体现在JVM的内存回收问题,使用MAT工具进行JVM内存分析(也可对android 的应用内存分析) 问题描述: 1.部分后端服务在运行一段时间后会突然年老 ...