【问题标题】:Make phone call in Unity?在 Unity 中拨打电话?
【发布时间】:2018-02-21 12:37:08
【问题描述】:

我在我的 c# 脚本中使用过

Application.OpenURL("tel:+79011111115");

拨号器出现了,但电话没有发生 如果是 Java,我可以说它像

Intent call = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+79011111115"));

但我需要:

Intent call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:+79011111115"));

在 C# 中有 Java 的 ACTION_CALL 的类比吗?
提前致谢

【问题讨论】:

标签: c# android unity3d


【解决方案1】:

您可以将您的 Java 代码放入 .jar.aar 插件中,然后从 C# 中调用它。您还可以使用 Unity 的 AndroidJavaClassAndroidJavaObject API,这完全不需要 Java 编译插件。

使用AndroidJavaClassAndroidJavaObject API,相当于下面的Java 代码:

Intent call = new Intent(Intent.ACTION_CALL, Uri.parse("tel:+79011111115"));

C#中如下:

string phoneNum = "tel: +79011111115";

//For accessing static strings(ACTION_CALL) from android.content.Intent
AndroidJavaClass intentStaticClass = new AndroidJavaClass("android.content.Intent");
string actionCall = intentStaticClass.GetStatic<string>("ACTION_CALL");

//Create Uri
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", phoneNum);

//Pass ACTION_CALL and Uri.parse to the intent
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", actionCall, uriObject);

请记住,您必须在 Intent 上启动 Activity 才能完成它,下面是 Java 中的样子:

startActivity(call);

下面是 C# 代码中用于启动 Activity 的等效代码:

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

try
{
    //Start Activity
    unityActivity.Call("startActivity", intent);
}
catch (Exception e)
{
    Debug.LogWarning("Failed to Dial number: " + e.Message);
}

最后,就像在 Java 中一样,您还必须添加 &lt;uses-permission android:name="android.permission.CALL_PHONE"&gt;&lt;/uses-permission&gt; 权限,否则将无法正常工作。有关如何将此 Android 权限添加到 Unity,请参阅 this 帖子。

适用于 Android 6.0 及更高版本。您必须使用运行时权限。 This Github 项目应该可以正常工作。

【讨论】:

    【解决方案2】:

    将此用于安卓。

    Application.OpenURL("tel://[+1234567890]");
    

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多