unity+android:撥打電話
阿新 • • 發佈:2018-12-13
package com.luoyikun.call; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import com.unity3d.player.UnityPlayer; public class MyCall extends Fragment { String m_gameObjectName; String m_funcName; private Context unityContext; private Activity unityActivity; private static final String TAG = "MyCall"; public void UnityFunc(String gameObjectName, String funcName) { m_gameObjectName = gameObjectName; m_funcName = funcName; } private static MyCall Instance = null; public static MyCall GetInstanceByAndroid(Activity activity,Context context) { if (Instance == null) { Instance = new MyCall(); Instance.unityActivity = activity; Instance.unityContext = context; activity.getFragmentManager().beginTransaction().add(Instance, TAG).commit(); } return Instance; } public static MyCall GetInstance() { if(Instance == null) { Instance = new MyCall(); //Instance.gameObjectName = gameObject; Instance.unityActivity = UnityPlayer.currentActivity; if (Instance.unityActivity == null) { Instance.CallUnity("Instance.unityActivity == null"); } Instance.unityContext = Instance.unityActivity.getBaseContext(); if (Instance.unityContext == null) { Instance.CallUnity("Instance.unityContext == null"); } UnityPlayer.currentActivity.getFragmentManager().beginTransaction().add(Instance, TAG).commit(); } return Instance; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); // 這一句很重要,儲存對該Fragment的引用,防止在旋轉螢幕等操作時時丟失引用(Fragment隸屬於Activity) } // 呼叫 Unity // gameObjectName 為接受訊息的Unity 中 GameObject 的名字 // functionName 為接受訊息的GameObject 掛載 C# 指令碼中的函式名 // _content 為傳送給Unity 的內容 public void CallUnity( String _content) { UnityPlayer.UnitySendMessage(m_gameObjectName, m_funcName, _content); } public void CallPhone(String phone) { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+phone)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); unityActivity.startActivity(intent); } }
unity端呼叫
public static void CallPhone(string phone)
{
AndroidJavaObject pluginObject = new AndroidJavaClass("com.luoyikun.call.MyCall").CallStatic<AndroidJavaObject>("GetInstance");
pluginObject.Call("CallPhone", phone);
}