首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之在Android中调用新浪微博接口(三十七)
2012
09-21

Unity3D研究院之在Android中调用新浪微博接口(三十七)

         最近工作比较忙 加上感觉自己好像有点上了年纪 整个人感觉非常的疲惫啊, 希望国庆期间可以好好休息一下,调养一下自己。这两天研究了一下如何在Unity中调用新浪微博接口, 上一篇已经IOS平台分享新浪微博,那么本篇文章将写在结合Unity 在 Android平台分享新浪微博。 使用起来我还是觉得IOS平台的接口比较好用,开始基本傻瓜化,可Android平台的接口新手的话估计导入后都无法运行。借此,雨松MOMO希望新浪微博尽快让Android平台下的接口也能好用,废话就不多说了,我们进入正题。

如下图所示,这是MOMO在Android手机中Unity3D下调用新浪微博分享接口。

Unity3D研究院之在Android中调用新浪微博接口(三十七) - 雨松MOMO程序研究院 - 1

 

在继续学习之前请朋友确认你所需要的微薄密钥是否准备完毕。

1.没有密钥的朋友

请在这里注册一个移动应用,http://open.weibo.com/ 。注册成功后在应用信息-》基本信息中即可获得APP KEY 和 APP SECRET,没有这两个KEY你是无法发送微薄的。 仅仅这些还是不够,因为是刚刚注册的新密钥所以是不能被公众所使用的,你应当继续在 应用信息-> 测试帐号 中添加测试账号,只有添加过的测试帐号才能使用新注册的密钥发送微薄。

2.有密钥的朋友

可以直接使用你的密钥来进行开发。

 

接着我们下载新浪微博Andoid下API接口, 下载地址:http://code.google.com/p/android-weibo-sdk/downloads/list     我个人在选择API的时候习惯选择最新的版本,页面中最上面的下载地址就是最新的API

解压后使用Eclipse将整个工程引入,一定要从解压后的顶层的文件夹将下面的两个工程同时的引入Eclipse,不然你会出现错误 “@style/ContentOverlay” 无法找到。这样的话就会将两个工程都引入至elipse,com_weibo_android 是API包, com_weibo_android_exampe 就是例子程序,直接运行它即可。

然后我们需要在Unity3D中制作Android的插件来调用新浪微博接口,如果你现在对Android的插件还是不是很了解,请阅读Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)文章。

开始MOMO使用com_weibo_android_exampe 来制作Android插件的时候发现最终Unity导出项目的时候无法运行,并且在手机中也无法找到刚刚编译的项目。非常奇怪,后来我就重新把API的代码整理了一遍,问题就解决了。

SinaMessageActivity.java  它是我们写的Activity插件, 当Unity 中准备好 文字与图片数据的时候调用它即可发送信息。

 

当插件准备完毕后,将它导入至Unity3D中,如果不会的朋友请看我之前的文章。Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)

我们在看看Unity中是如何调用插件中的分享接口的。

Test.cs

 

调用接口后会调用新浪登录界面,继续发送新浪微薄。

Unity3D研究院之在Android中调用新浪微博接口(三十七) - 雨松MOMO程序研究院 - 2

 

 

最后我把文本的Android插件代码 以及 Unity工程放出来, 下载完毕后解压即可看到工程。雨松MOMO希望大家学习愉快。

下载地址 http://vdisk.weibo.com/s/d3xA1

 

2013年3月23日补充

 

在调用新浪微薄Android接口的时候我还出现了一个 Can’t create handler inside thread that has not called Looper.prepare() 错误。

这个错误前段时间一直因为别的事情没有能即时的解决。 这几天MOMO在做Android for QQzone的插件中也遇到了同样的错误。出现这个错误的额原因就是unity调用插件中的方法中又开启了新的线程。

先改动一下上面的unity C#脚本,方法名我就不换了。。。主要说原理。。

 

 这段代码的意思就是在unity中把当前的Activity对象传递给Android插件中。在插件中这样来写。

 

在插件中通过调用UI主线程来执行原先的子线程。。

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 请问大神用最新sdk的oauth时授权页面弹不出来是该如何解决啊。ssohandler是封装的,根本无法控制会使用sso登陆或是oauth,这是该怎么办呢?

  2. 发送完成貌似木有callback?现有个需求,unity调用android方法需要传入一个Callback接口对象,以便发送完成后回调。 这个该怎么处理,求大神指点~

  3. 您好,运行了您提供的例子,报错如下:Exception: JNI: Init’d AndroidJavaClass with null ptr!UnityEngine.AndroidJavaClass..ctor (IntPtr jclass) (at C:/BuildAgent/work/cac08d8a5e25d4cb/Runtime/Export/AndroidJavaImpl.cs:533)UnityEngine.AndroidJavaObject.get_JavaLangClass () (at C:/BuildAgent/work/cac08d8a5e25d4cb/Runtime/Export/AndroidJavaImpl.cs:511)UnityEngine.AndroidJavaObject.FindClass (System.String name) (at C:/BuildAgent/work/cac08d8a5e25d4cb/Runtime/Export/AndroidJavaImpl.cs:502)UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) (at C:/BuildAgent/work/cac08d8a5e25d4cb/Runtime/Export/AndroidJavaImpl.cs:522)UnityEngine.AndroidJavaClass..ctor (System.String className) (at C:/BuildAgent/work/cac08d8a5e25d4cb/Runtime/ExportGenerated/Editor/AndroidJava.cs:91)Test.OnGUI () (at Assets/Test.cs:29)不知道您遇到过这种问题么

  4. Pingback: コーチ アウトレット

  5. Pingback: ルイヴィトン アウトレッ

  6. Pingback: コーチ アウトレット

  7. unity里面调用新浪微博的mWeibo.authorize(MainActivity.this, new AuthDialogListener())代码时出现报错“Resource ID #0x71040000 type #0x3 is not valid”,雨松哥解救啊~~~

  8. 雨松哥,我在android里面调用新浪微博是可以的,但是在unity里面调用android包时,每次我执行mWeibo.authorize(MainActivity.this, new AuthDialogListener())就报错,我用的是最新的API,麻烦雨松哥帮忙啊~~~~

  9. momo,问下为何用微薄的jar呢?像你这样直接用源码包unity是可以和android通信的。。但是我下载最新的微薄版本,导入sso的jar包写代码…和android通信时候会有问题..请问这是为什么呢..难道就是因为那个loop?

  10. 好像是有这个问题 “关闭微博登陆界面后会出现按钮无法再点击,假死。” 当时写的时候没有注意这块。 可惜这段时间在忙别的事情 所以U3D就暂时搁置下了。。 希望有解决的朋友顺便告知一下我, 我转载进博客中。。

  11. 谢谢楼主分享,我已经成功的整合到unity里了,现在发现个问题,就是分享微博的时候会出现一个深蓝色的背景,遮盖住原来的界面,请问这个有解决办法吗?

  12. 你好,今天测试您的例子,发现发布微博后,关闭微博登陆界面后会出现按钮无法再点击,假死。后来发现是因为用了Looper的问题,但是不知道怎么修改才好。希望能解答。还有一点就是您的共享的工程文件Java代码乱码,weibo部分和您自己写的部分编码不一致。微博部分代码都是乱的。doobear

  13. 你好,请问我这里报错,能帮忙看下是什么原因吗?谢谢09-28 01:25:24.539: E/AndroidRuntime(909): Uncaught handler: thread main exiting due to uncaught exception09-28 01:25:24.539: E/Monkey(909): exception :java.io.FileNotFoundException: /dev/kmsg (Permission denied)09-28 01:25:24.549: W/System.err(909): java.io.IOException: Permission denied09-28 01:25:24.549: E/AndroidRuntime(909): exception :java.io.FileNotFoundException: /dev/kmsg (Permission denied)09-28 01:25:24.549: E/AndroidRuntime(909): FATAL EXCEPTION: main09-28 01:25:24.549: E/AndroidRuntime(909): java.lang.RuntimeException: Only one Looper may be created per thread09-28 01:25:24.549: E/AndroidRuntime(909): at android.os.Looper.prepare(Looper.java:74)

  14. 请问如果我unity里已经有别的activity了 怎么样才能再调用这个呢?现在做的个小东西里一开始就有了qcar的activity 我想截图发个微博 但我不知道这两个activity之间该怎么切换