Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


Code examples: Call Java/Kotlin code from C# scripts

Refer to the code examples for integrating Java/Kotlin functionality in your Unity project.
Read time 2 minutesLast updated 6 days ago

Unity provides high-level APIs such as
AndroidJavaObject
,
AndroidJavaClass
,
AndroidJavaProxy
, and
AndroidApplication
that allow you to interact with Java/Kotlin code from C# scripts.
The following code examples demonstrate how to use these APIs.

Example 1: Get the hash code for a Java string

The following code example creates an instance of java.lang.String initialized with a string, and retrieves the hash value for that string.
using UnityEngine;public class JavaExamples{ public static int GetJavaStringHashCode(string text) { using (AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", text)) { int hash = jo.Call<int>("hashCode"); return hash; } }}
This example:
  1. Creates an
    AndroidJavaObject
    that represents a java.lang.String.
  2. The
    AndroidJavaObject
    constructor takes at least one parameter, which is the name of the class to construct an instance of. Any parameters after the class name are for the constructor call on the object, in this case the
    text
    parameter from
    GetJavaStringHashCode
    .
  3. Calls hashCode() to get the hash code of the string. This call uses the
    int
    generic type parameter for
    Call
    because
    hashCode()
    returns the hash code as an integer.
Note
You can't use dotted notation to instantiate a nested Java class. You must use the
$
separator to instantiate inner classes. For example, Use
android.view.ViewGroup$LayoutParams
or
android/view/ViewGroup$LayoutParams
, where the
LayoutParams
class is nested in the
ViewGroup
class.

Example 2: Retrieve the application's cache directory

The following code example retrieves the cache directory for the current application in C# using the
AndroidApplication
class.
using UnityEngine;using UnityEngine.Android;public class JavaExamples{ public static string GetApplicationCacheDirectory() { using var javaFile = AndroidApplication.currentActivity.Call<AndroidJavaObject>("getCacheDir"); var cacheDirectory = javaFile.Call<string>("getCanonicalPath"); return cacheDirectory; }}
This example:
  1. Uses
    AndroidApplication.currentActivity
    to access the current Android activity, without explicitly creating
    AndroidJavaClass
    or
    AndroidJavaObject
    instances.
  2. Calls getCacheDir() on the Activity object, which returns a File object that represents the cache directory.
  3. Calls getCanonicalPath() on the File object can to get the cache directory as a string.
Note
This example is for reference purposes. Instead, to access the application’s cache and file directory use the Application.temporaryCachePath and Application.persistentDataPath APIs.

Additional resources