如何从Unity Android应用程序中打开Android系统设置

5

我正在尝试从我的Unity Android应用程序中打开系统设置,但我收到以下错误:

UnityEngine.AndroidJavaException: android.content.ActivityNotFoundException:找不到处理Intent {act = android.settings.ACTION_SETTINGS cat = [android.intent.category.DEFAULT] dat = package:com.xxx.xxxxx flg = 0x10000000}的活动

这是我的代码:

try
{
    using (var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
    using (AndroidJavaObject currentActivityObject = unityClass.GetStatic<AndroidJavaObject>("currentActivity"))
    {
        string packageName = currentActivityObject.Call<string>("getPackageName");

        using (var uriClass = new AndroidJavaClass("android.net.Uri"))
        using (AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("fromParts", "package", packageName, null))
        using (var intentObject = new AndroidJavaObject("android.content.Intent", "android.settings.ACTION_SETTINGS", uriObject))
        {
            intentObject.Call<AndroidJavaObject>("addCategory", "android.intent.category.DEFAULT");
            intentObject.Call<AndroidJavaObject>("setFlags", 0x10000000);
            currentActivityObject.Call("startActivity", intentObject);
        }
    }
}
catch (Exception e)
{
    Debug.Log(e);
}

你有收到任何错误信息吗?如果没有,你可以先将项目导出到gradle,然后加载到Android Studio中进行调试,以捕获任何本地错误。 - S.Fragkos
@S.Fragkos,我遇到了这个异常,UnityEngine.AndroidJavaException:android.content.ActivityNotFoundException:找不到处理意图的活动{act =android.settings.ACTION_SETTINGS cat=[android.intent.category.DEFAULT] dat=package:com.xxx.xxxxx flg=0x10000000}............. - Junaid Pathan
2个回答

2

这在安卓10上对我有效。

之前:android.intent.category.DEFAULT

之后:android.intent.category.APPLICATION_DETAILS_SETTINGS

using var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
using AndroidJavaObject currentActivityObject = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
string packageName = currentActivityObject.Call<string>("getPackageName");
using var uriClass = new AndroidJavaClass("android.net.Uri");
using AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("fromParts", "package", packageName, null);
using var intentObject = new AndroidJavaObject("android.content.Intent", "android.settings.APPLICATION_DETAILS_SETTINGS", uriObject);
intentObject.Call<AndroidJavaObject>("addCategory", "android.intent.category.DEFAULT");
intentObject.Call<AndroidJavaObject>("setFlags", 0x10000000);
currentActivityObject.Call("startActivity", intentObject);

1

(移除ACTION_)changed:android.settings.SETTINGS


4
尽管这可能回答了发帖者的问题,请考虑为您的回答添加更多细节和解释。 - Sven.hig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接