AndroidJavaClass m_UnityPlayer;
    AndroidJavaObject m_CurrentActivity;
    AndroidJavaClass m_ContextCombat;
    
    // 생성자
    public PermissionManager()
    {
        // Unity Android의 부모역할을 하는 클래스
        m_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        // 현재 실행되고 있는 Android Activity를 가져온다
        m_CurrentActivity = m_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        // 권한여부를 가져올 수 있는 클래스
        m_ContextCombat = new AndroidJavaClass("android.support.v4.content.ContextCompat");
    }
    
    /** GetAndroidPhoneNumber를 Android Code로 이해할 경우.
       public class CurrentActivity extends  UnityPlayerActivity
       {
           protected void GetPhoneNumber()
           {
               TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
               PhoneNumber = tm.getLine1Number();
           }
       }
    */
    public string GetAndroidPhoneNumber()
    {
        string str = "";

        if (m_CurrentActivity == null)
            return "";

        if (IsPermissionGranted(Permissions.READ_PHONE_STATE) == false)
            return "";

        // 액티비티에서 Android Navtive Method 인 "getSystemService"를 호출
        AndroidJavaObject pServiceObj = m_CurrentActivity.Call<AndroidJavaObject>("getSystemService", "phone");
        if (pServiceObj == null)
            return "";

        // 자바 클래스 가져옴
        AndroidJavaClass clazz = new AndroidJavaClass("java.lang.Class");
        if (clazz == null)
            return "";

        // 자바 클래스에 있는 TelephonyManager클래스 가져옴
        AndroidJavaObject pDest = clazz.CallStatic<AndroidJavaObject>("forName", "android.telephony.TelephonyManager");
        if (pDest == null)
            return "";

        //"getSystemService"로 가져온 SystemService Instance를 TelephonyManager로 캐스팅함
        AndroidJavaObject pTelephonyService = pDest.Call<AndroidJavaObject>("cast", pServiceObj);
        if (pTelephonyService == null)
            return "";

        //이로서 pTelephonyService은 TelephonyManager의 인스턴스로 사용가능
        str = pTelephonyService.Call<string>("getLine1Number");
        //Debug.Log("PhoneNumber1 : " + str);

        if (string.IsNullOrEmpty(str) == true)
            return "";

        if (str.Length > 0 && str[0] == '+')
        {
            str = "0" + str.Substring(3);
        }

        //Debug.Log("PhoneNumber2 : " + str);
        return str;
    }

'게임개발 > 유니티' 카테고리의 다른 글

[UniteSeoul 2020] Tips & Tricks For Using Profiler  (0) 2020.12.02
AssetBundle 관리  (0) 2020.04.13
단발성 진동 알람 이벤트 처리  (0) 2019.04.24
unity google play games plugin 연동 문제  (0) 2018.08.17
베지어 곡선  (0) 2017.01.17

+ Recent posts