1.Unity调用Android

根据unity用户手册,unity可以采用native code(c/c++),但是也提供了C#调用方法,本文对此进行简单讲解。

2.Unity获取android类

通过下述方法即可获取包com.ii.intentreceiver(可类比于C#命名空间)下的类MainActivity。继而可以调用MainActivity的静态方法getIntentResult。其返回值为string,如果无返回值,则直接调用CallStatic即可。

using (AndroidJavaClass mainActivityClass = new AndroidJavaClass("com.ii.intentreceiver.MainActivity"))
{
Debug.Log("IntentReceiver start catch infomation");
try
{
result = mainActivityClass.CallStatic<string>("getIntentResult");
}
catch(Exception ex)
{
Debug.Log("IntentReceiver get result failed:" + ex.Message);
}
}

3.Unity获取android类的实例

通过下述方法即可获取包com.ii.intentreceiver(可类比于C#命名空间)下的类MainActivity的一个实例。继而可以调用MainActivity的方法getResult。其返回值为Android定义的一个实例,所以返回值为AndroidJavaObject类型,如果无返回值,则直接调用Call即可。

        try
{
using (AndroidJavaObject main = new AndroidJavaObject("com.ii.intentreceiver.MainActivity",null))
{
intentJavaObject = main.Get<AndroidJavaObject>("getResult");
}
}
catch(AndroidJavaException ex)
{
Debug.Log("Exception while connecting to the Activity:" + ex.ToString());
return null;
}

3.获取Unity的Activity

即可获取unity的currentActivity

    private static string unityPlayerClass = "com.unity3d.player.UnityPlayer";
public static AndroidJavaObject GetActivity()
{
AndroidJavaClass jc = new AndroidJavaClass(unityPlayerClass);
if (jc == null)
{
Debug.LogErrorFormat("Failed to get Unity Player class, {0}", unityPlayerClass);
return null;
}
AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
if (activity == null)
{
Debug.LogError("Failed to obtain Android Activity from Unity Player class.");
return null;
}
return activity;
}

4.Unity获取Android回调结果

4.1 Android定义的接口

此处Android端通过接口来实现的回调

package com.ii.Manager;

public class PluginCallback {
public interface ResultCallback {
public void OnSuccess(String result, String hint);
public void OnError(String result, int errorCode);
}
}

Android层方法:

package com.ii.Manager;
public class Method {
public void Execute(PluginCallback.ResultCallback callback){。。。}
}

4.2 Unity定义相应的类

接受回调的类:
此类要继承AndroidJavaProxy,同时根据原Android中的接口定义两个同名的方法。

            public delegate void SuccessHandler(string result, string hint);
public delegate void ErrorHandler(string result, int errorCode);
class ExecuteCallback : AndroidJavaProxy
{
SuccessHandler successHandler;
ErrorHandler errorHandler;
public InstallApkCallback(SuccessHandler successCallback,
ErrorHandler errorCallback)
: base("com.ii.Manager.PluginCallback$ResultCallback")
{
successHandler = successCallback;
errorHandler = errorCallback;
} public void OnSuccess(string result, string hint)
{
if (successHandler != null)
successHandler(result, hint);
} public void OnError(string result, int errorCode)
{
if (errorHandler != null)
errorHandler(result, errorCode);
}
}

4.3 Unity使用方法

在new ExecuteCallback(null,null)处填入回调方法。

AndroidJavaObject jo = new AndroidJavaObject("package com.ii.Manager.Method");
jo.Call("Execute",new ExecuteCallback(null,null));

Unity调用Android的更多相关文章

  1. Unity调用Android类方法

    Unity调用Android类方法 1.  添加Unity的classes.jar文件 创建一个Android工程AndroidUnityDemo. 由于Unity的版本不同,直接在Unity安装包文 ...

  2. unity 调用android函数

    unity 调用android函数 分类: unity2013-12-19 17:54 475人阅读 评论(0) 收藏 举报 unityandroidjar 我们知道,安卓project都有一个And ...

  3. Unity调用Android相册

    最近有一个项目有这个需求,让用户上传自己的交易凭证的截图,之前因为对调Android原生的东西不太熟悉,就先放了一边 因为项目已经上线,只不过是该功能未开放而已,那么现在为什么要写这篇博客呢,是因为. ...

  4. Andriod Unity 调用android函数

    //首先这是一个前沿 //我看了多的资料,还看了近半个小时的 android activity 的讲解 终于打出了apk //接下来开始 //一步一步的跟着我走 1.创建一个android项目或者一个 ...

  5. Unity 调用android插件

    1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...

  6. Unity调用Android的两个方式:其一、调用jar包

    unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...

  7. unity调用Android百度地图

    由于个人是Android小白,在这个配置上面被折磨了很久,因此写下这篇文章 工具:eclipse + unity5.6.1 首先去百度地图开发者平台下载你需要的资源,我只需要显示地图和定位,这个时候你 ...

  8. unity调用Android的jar包

    简介 有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如... 有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去 ...

  9. unity调用Android的两种方式:其二,调用aar包

    上一篇我们讲了unity如何调用jar包 http://www.cnblogs.com/Jason-c/p/6743224.html, 现在我们介绍一下怎么生成aar包和unity怎么调用aar 一. ...

随机推荐

  1. Maven项目运行报错提示找不到加载主类

    遇到这个问题花了几小时时间看网上的各种解决方法.试了几种都没用,最后用了这种本办法. 亲测第三条 https://blog.csdn.net/yuliantao/article/details/766 ...

  2. ubuntu linux重置密码

    (和网上的有点不一样,记录一下) 1)重启系统,同时长时间按住shift键进入grub菜单:GNU GRUB version 1.99-12ubuntu5(如图一) 2)选择Ubuntu, with ...

  3. python的元组存储的实质和多元赋值

    python中有一种赋值机制即多元赋值,采用这种方式赋值时,等号两边的对象都是元组并且元组的小括号是可选的.通常形式为 x, y, z = 1, 2, 'a string' 等同于 (x, y, z) ...

  4. Mysql高手系列 - 第21篇:什么是索引?

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 这是Mysql系列第21篇. 本文开始连续3篇详解mysql索引: 第1篇来说说什么是索引? 第2篇详解Mysql中 ...

  5. python——成语接龙小游戏

    小试牛刀的简易成语接龙. 思路—— 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...

  6. IDEA 学习笔记之 Java项目开发深入学习(2)

    Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...

  7. Web应用程序并发问题处理的一点小经验

    在web应用中,一个账户,会有N多个涉及到数字的字段.比如一个账户的金额,积分等.这些字段就涉及到增减的情况.如果是在测试环境下,靠程序员或者测试手动点击.一般是发现不了问题. 一旦上到正式环境下.有 ...

  8. Django中的表关系实现及操作

    表关系的实现   预备知识 ORM的正向操作和反向操作: 1.正向操作:一个模型中定义了一个外键,通过该模型对该外键操作的操作叫做正向操作. 2.反向操作:被外键所关联的模型,通过该模型对外键所在模型 ...

  9. 了解ajax基本爬取方式

    '''爬去豆瓣电影数据了解ajax的基本爬去方式 ''' from urllib import requestimport jsonimport ssl url = "https://mov ...

  10. Python 爬虫 爬取 煎蛋网 图片

    今天, 试着爬取了煎蛋网的图片. 用到的包: urllib.request os 分别使用几个函数,来控制下载的图片的页数,获取图片的网页,获取网页页数以及保存图片到本地.过程简单清晰明了 直接上源代 ...