c# - 有没有办法在 Android 上重新启动 Unity 应用程序?
问题描述
我知道这样做不是一个好习惯,但在我的特殊情况下,这正是我所需要的:我能够重新启动我的 Unity 应用程序(从本机插件或 C#,没关系)。
解决方案
我设法让它与这段代码一起工作:
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);
}
}
推荐阅读
- html - 为什么我的页面不能向下滚动
- c# - other.transform.SetParent 弄乱了我的播放器的规模
- python - 从另一个文件调用时未找到在一个文件中定义的函数
- algorithm - 日期计算:计算在给定范围内匹配复杂条件的天数,无需循环
- ios - 如何在 IOS 中获得类似于 IMEI 的标识字符串
- c# - datagrid在wpf c#中获取选定的行和单元格值
- postgresql - INSERT INTO 插入 0 行
- c# - UnitOfWork + Repository 模式 - 添加自定义存储库
- mysql - Rails4 has_many:通过然后如何获取 new.html.erb 中的值
- c++ - 如何初始化一个类的char成员变量?