有没有办法在 Android 上重新启动 Unity 应用程序?

Tam*_*aya 3 c# plugins android native unity-game-engine

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

我已经尝试了此链接中的代码(甚至是此处的纯 C# ),但没有成功。

Tam*_*aya 5

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)