我在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的类比?
提前致谢
解决方法:
您可以将Java代码放入.jar或.aar插件中,并从C#中调用它.您还可以使用Unity的AndroIDJavaClass和AndroIDJavaObject API,从而完全不需要Java编译插件.
使用AndroIDJavaClass和AndroIDJavaObject 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.IntentAndroIDJavaClass intentStaticclass = new AndroIDJavaClass("androID.content.Intent");string actionCall = intentStaticclass.GetStatic<string>("ACTION_CALL");//Create UriAndroIDJavaClass uriClass = new AndroIDJavaClass("androID.net.Uri");AndroIDJavaObject uriObject = uriClass.CallStatic<AndroIDJavaObject>("parse", phoneNum);//Pass ACTION_CALL and Uri.parse to the intentAndroIDJavaObject 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中一样,您还必须添加< uses-permission androID:name =“ androID.permission.CALL_PHONE”>< / uses-permission>权限,否则它将无法正常工作.有关如何将此AndroID权限添加到Unity的信息,请参见this.
适用于AndroID 6.0及更高版本.您必须使用运行时权限.为此,This Github项目应该可以正常工作.
总结以上是内存溢出为你收集整理的c#-在Unity中打电话?全部内容,希望文章能够帮你解决c#-在Unity中打电话?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)