Unity与Android交互(5)——常见交互示例

【前言】

之前的文章更多的是进行一些原理说明,很少涉及代码,本文举一些Unity与Android交互的常见的一些例示例。

获取UnityPlayerActivity

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

获取包名 

currentActivity.Call<string>("getPackageName")

获取Android Id

(Android Id是Android操作系统提供的一个用于标识设备的唯一标识符,是一个字符串类型的值,可以用于区分不同的设备。其是操作系统在设备首次启动时生成的,一般是通过获取设备的硬件信息,如IMEI,MAC地址等,进行hash计算得到的。)

AndroidJavaObject contentResolver = currentActivity.Call<AndroidJavaObject>("getContentResolver");
AndroidJavaClass secure = new AndroidJavaClass("android.provider.Settings$Secure");
string android_id = secure.CallStatic<string>("getString", contentResolver,"android_id");

获取应用的内部存储路径

currentActivity.Call<AndroidJavaObject>("getFilesDir").Call<string>("getAbsolutePath")

如何开启一个线程来调用Java代码

public void Init()
{
jniAttached = false
Thread thread = new Thread(Run)
Thread.Start()
}

public void Run()
{
    if(!jniAttached)
    {
       if(AndroidJNI.AttachCurrentThread() == 0)
       {
            jniAttached = true;
       }
    }
}


public void Dispose()
{
    if(jniAttached)
        {
            AndroidJNI.DetachCurrentThread();
        }
}

获取手机公共图片路径

using(AndroidJavaClass environment = new AndroidJavaClass("android.os.Environment"))
        {
			string fileFolder = environment.CallStatic<AndroidJavaObject>("getExternalStoragePublicDirectory", "Pictures").Call<string>("getAbsolutePath");
		}

未完待续。。。

【参考】

在unity中如何高效的使用内置android方法_w/unity: androidjnihelper: converting byte array i_东方快弟的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/enternalstar/article/details/131299459