【问题标题】:How to make a whatsapp video call with C# Unity如何使用 C# Unity 进行 whatsapp 视频通话
【发布时间】:2021-02-10 13:09:26
【问题描述】:

我的目标: 通过按下按钮,即可开始与特定人员的 whatsapp 视频通话。 我不太了解 Java,所以我想通过 Unity 中的 C# 来完成。

我试图通过将 this process 翻译成 C# 来复制它。

但是有问题,因为一旦按下按钮我只能访问whatsapp主页。

我还添加了从清单访问联系人的权限。

我正在手动完成所有操作,因此我将脚本粘贴到 android studio 上以查找具有 whatsapp 视频通话 mimetype 的特定联系人的 _id。

于是我尝试通过Unity的AndroidJavaClass翻译调用函数:

Java 代码:

 public void videoCall(String id){
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);

            intent.setDataAndType(Uri.parse("content://com.android.contacts/data/" + id),
                    "vnd.android.cursor.item/vnd.com.whatsapp.video.call");
            intent.setPackage("com.whatsapp");

            startActivity(intent);
}

C#代码:

public static class Intentions
{
static string id = "5576";
static string data_url = "content://com.android.contacts/data/" + id;
static string type_url = "vnd.android.cursor.item / vnd.com.whatsapp.video.call";

public static AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
public static AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject> 
("currentActivity");
public static AndroidJavaObject packageManager = currentActivity.Call<AndroidJavaObject> 
("getPackageManager");
public static AndroidJavaObject intent = packageManager.Call<AndroidJavaObject> 
("getLaunchIntentForPackage", "com.whatsapp");

public static AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
public static AndroidJavaObject uriData = uriClass.CallStatic<AndroidJavaObject>("parse", data_url);

public static void Launch()
{
    intent.Call<AndroidJavaObject>("setAction", "android.intent.action.VIEW");
    intent.Call<AndroidJavaObject>("setDataAndType", uriData, type_url);

    if (IsAndroid())
    {
        currentActivity.Call("startActivity", intent);
    }
}

public static bool IsAndroid()
{
#if UNITY_ANDROID && !UNITY_EDITOR
    return true;
#else
    return false;
#endif
}
}

【问题讨论】:

    标签: java c# android unity3d


    【解决方案1】:

    您实际上不需要通过 Java 编写插件,而是可以直接从 Unity 源代码中使用 C#。这样做是为了通过 REST 接口调用 WhatsApp API 调用。

    String number = “16696661337”;
    String url = "https://api.whatsapp.com/send?phone=" + number;
    /* 
    mobile number is: 1-(669)666-1337, your final string will be:
    https://api.whatsapp.com/send?phone=6696661337
    */
    Application.OpenURL(url);
    

    如果您愿意,您也可以发送短信。不要忘记包含您的国家/地区代码,以便 API 按预期工作。

    【讨论】:

    • 谢谢,不幸的是,此方法仅允许您访问 whatsapp 联系人资料,之后需要手动按下视频通话符号才能启动它。我正在寻找一种方法来联系该联系人并直接发起视频通话。
    猜你喜欢
    • 2019-03-23
    • 2011-01-28
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多