【Unity】C#のスクリプトのみで Android アプリの詳細設定画面を開く

2019/12/23DEVELOP, Unity

Android アプリの詳細設定画面とは以下の様な権限許可やストレージ容量が確認できる画面のこと。

この画面を Unity の C#スクリプトだけで呼び出してみます。
※Java のクラスを叩いています。

ユーティリティクラス

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RuntimeAndroidSettingHelper
{
    private RuntimeAndroidSettingHelper() { }
    private static AndroidJavaObject GetActivity()
    {
        using (var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            return UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        }
    }
 
 
    // 詳細設定ダイアログを開く
    public static void RequestDetailSettings()
    {
        if (IsAndroidMOrGreater())
        {
            using (var activity = GetActivity())
            {
                var packageName = activity.Call<string>("getPackageName");
                using (var uriClass = new AndroidJavaClass("android.net.Uri"))
                using (var 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);
                    activity.Call("startActivity", intentObject);
                }
            }
        }
    }
}

上記ファイルをPlugins/Android フォルダ以下に配置します。 そして RequestDetailSettings を呼び出します。

RuntimeAndroidSettingHelper.RequestDetailSettings();

これでアプリの詳細画面を開くことが出来ます。

Posted by kazupon