如何在Unity3D中设置Android Intent以从我的应用程序导航到设置,然后返回

k5hmc34c  于 2022-11-15  发布在  Android
关注(0)|答案(1)|浏览(103)

我有Unity3D虚拟现实应用程序(与平台无关),需要从应用导航到设置,然后返回。我们正在尝试从VR应用中安装APK。在此过程中,Android操作系统必须在继续操作之前与用户确认是否可以。我们希望挂钩到此权限过程,以便能够在应用的不同阶段调用它。并且如果可能的话,在用户确认他们的选择时收听,然后在应用程序中相应地做出React。
到目前为止,我可以使用这段代码强制我的应用检查从未知来源安装的权限,然后将您发送到正确的设置。请注意,这段代码远未清理,但您可以得到大致的想法:

var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
bool launchIntent = packageManager.Call<bool>("canRequestPackageInstalls");

if (!launchIntent)
{
    try
    {
        using AndroidJavaClass unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        using AndroidJavaObject currentActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
        string packageName = currentActivity.Call<string>("getPackageName");
        using AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
        using AndroidJavaObject uriObject =
                uriClass.CallStatic<AndroidJavaObject>("fromParts", "package", packageName, null);
        using AndroidJavaObject intentObj = new AndroidJavaObject("android.content.Intent",
                "android.settings.MANAGE_UNKNOWN_APP_SOURCES", uriObject);
            
        currentActivity.Call("startActivity", intentObj);
    }
    catch (Exception ex)
    {
        Debug.LogException(ex);
    }
}

我想做的是
1.安装我们的VR应用程序
1.在首次运行时,它将检查这些权限
1.如果未授权,则通知用户,然后将用户导航到正确的设置窗口以“启用”它。
1.在我们的虚拟现实应用中,倾听这种变化并采取相应的行动。或
1.我应该有什么意图标志来确保back to application按钮/后退箭头显示在设置窗口中?在不同的设备上,相同的代码在底部显示一个箭头框,我可以单击它,它会带我回到应用程序,并从我离开的地方继续。我如何确保每个设备都显示?
2022年4月11日编辑:如果我能确保按钮出现,那么我可以只是检查回到应用程序再次如果设置已启用,一切都很好。

u4vypkhs

u4vypkhs1#

目前,我发布的代码在两个不同的VR头戴设备上运行不同。一个会把我们送回应用程序,另一个没有后退按钮。现在我们有一个解决两个问题的方案。

相关问题