Unity调用安卓Android的Toast

摘要:
AndroidJavaObjectcontext=currentActivity.Call;*/}这段代码也是Unity调用安卓的经典例子。项目中可用同样方法来寻找包,找到类成员,调用函数并传参。
需求:在游戏中弹窗消息,调起安卓的Toast

项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试。

方法一:Unity中,C#主导

//Unity调用安卓的土司
public static void MakeToast(stringinfo)
{
    AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
    currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>{
        Toast.CallStatic<AndroidJavaObject>("makeText", currentActivity, info, Toast.GetStatic<int>("LENGTH_LONG")).Call("show");
    }));
    /*
    // 匿名方法中第二个参数是安卓上下文对象,除了用currentActivity,还可用安卓中的GetApplicationContext()获得上下文。
    AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
    */
}

这段代码也是Unity调用安卓(C#主导)的经典例子。项目中可用同样方法来寻找包,找到类成员,调用函数并传参。

方法二:Android Studio中,Java主导

importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.widget.Toast;
public class MainActivity extendsUnityPlayerActivity {
    @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
}
    //该方法由Unity调用
    public void makeToast(finalString msg){
        runOnUiThread(newRunnable() {
            @Override
            public voidrun() {
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG);
            }
        });
    }
}

该方法需要将安卓项目导出aar包,作为插件导入到Unity的Assets目录中,来给Unity使用。

更多参考:

免责声明:文章转载自《Unity调用安卓Android的Toast》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用RichEdit程序无法启动IOS 特定于设备的开发:使用加速器启动屏幕上的对象下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JAVA消息服务JMS规范及原理详解

JAVA消息服务JMS规范及原理详解 一、简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 JMS允许应用程序...

使用 async-await 简化代码的检讨

  从API版本升级到4.6之后, Unity支持了async和await语法, 并且根据测试来看, 它运行在主线程里, 跟一般的C#编译不大一样, 这就很有操作空间了, 先来看看普通C# Console工程和Unity中运行的差别:   1. C# Console using System; namespace AsyncTest { clas...

极光推送 JPush 简介 集成 MD

Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录JPush产品简介消息形式推送目标集成步骤FAQ简洁版自定义消息推送DemoActivityReceiver消息处理类B...

Android自定义控件:进度条的四种实现方式(Progress Wheel的解析)

最近一直在学习自定义控件,搜了许多大牛们Blog里分享的小教程,也上GitHub找了一些类似的控件进行学习。发现读起来都不太好懂,就想写这么一篇东西作为学习笔记吧。 一、控件介绍: 进度条在App中非常常见,例如下载进度、加载图片、打开文章、打开网页等等……都需要这么一个效果让用户知道我们的App正在读取,以构造良好 的交互。如果没有这样一个效果的话,用户...

android的几种“通知”方式简单实现(Notification&amp;amp;NotificationManager)

  关于通知Notification相信大家都不陌生了,平时上QQ的时候有消息来了或者有收到了短信,手机顶部就会显示有新消息什么的,就类似这种。今天就稍微记录下几种Notification的用法。3.0以前的通知和3.0以后的通知是有些区别的。话不多说,直接上代码。   1、新建一个android项目     我新建项目的 minSdkVersion="1...

关于adb安装指定版本

由于airtest测试群控安卓手机发现adb服务端和客户端版本不一致,运行经常报错,服务端是1.0.40 而客户端为1.0.41. (注意:服务端是指手机端,客户端为电脑端,安卓七和六的版本为40.而安卓八以上的为41,所以说做群控的时候最好安装同样传的手机系统) 此时我们需要更改客户端的adb版们,此处以mac为例 经多多方查找在这个人的博客上找到了 h...