首页 > 解决方案 > 有没有办法在 Android 上重新启动 Unity 应用程序?

问题描述

我知道这样做不是一个好习惯,但在我的特殊情况下,这正是我所需要的:我能够重新启动我的 Unity 应用程序(从本机插件或 C#,没关系)。

我已经尝试了来自这个链接的代码(甚至来自纯 C#这里)但没有成功。

标签: c#androidunity3dpluginsnative

解决方案


我设法让它与这段代码一起工作:

private static void RestartAndroid() {
    if (Application.isEditor) return;

    using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
        const int kIntent_FLAG_ACTIVITY_CLEAR_TASK = 0x00008000;
        const int kIntent_FLAG_ACTIVITY_NEW_TASK = 0x10000000;

        var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        var pm = currentActivity.Call<AndroidJavaObject>("getPackageManager");
        var intent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", Application.identifier);

        intent.Call<AndroidJavaObject>("setFlags", kIntent_FLAG_ACTIVITY_NEW_TASK | kIntent_FLAG_ACTIVITY_CLEAR_TASK);
        currentActivity.Call("startActivity", intent);
        currentActivity.Call("finish");
        var process = new AndroidJavaClass("android.os.Process");
        int pid = process.CallStatic<int>("myPid");
        process.CallStatic("killProcess", pid);
    }
}

推荐阅读