Cha*_*kay 5 c# android unity-game-engine
我在 unity 游戏中有一个反馈按钮,如果用户点击它,那么它应该启动一个默认的电子邮件应用程序,主题、电子邮件地址已经填写。我已经在 Android 应用程序中完成了此操作,但是如何从 unity 调用它?
除了这个,还有其他更好的反馈方法吗?
你在做什么是插件。你不需要插件。
您可以简单地发送电子邮件:
void sendEmail(string toEmail, string emailSubject, string emailBody)
{
emailSubject = System.Uri.EscapeUriString(emailSubject);
emailBody = System.Uri.EscapeUriString(emailSubject);
Application.OpenURL("mailto:" + toEmail + "?subject=" + emailSubject + "&body=" + emailBody);
}
Run Code Online (Sandbox Code Playgroud)
要发送,请致电:
sendEmail("example@example.com", "Test", "This is a text\r\nAnother test\r\nAnd another text");
Run Code Online (Sandbox Code Playgroud)
这将适用于 PC、Android 和 iOS。我不知道Mac。
现在,如果您仍然想使用 Android API,您仍然不需要为此制作插件。您可以使用AndroidJavaObjectAndroid API使用和编写电子邮件代码。
private static void SendMail(string subject, string body, bool useHTML)
{
using (var intentClass = new AndroidJavaClass("android.content.Intent"))
{
// intent = new Intent(Intent.ACTION_SEND);
using (var intentObject = new AndroidJavaObject("android.content.Intent", intentClass.GetStatic<string>("ACTION_SEND")))
{
// Setting text type
if (useHTML)
// intent.setType("text/html");
intentObject.Call<AndroidJavaObject>("setType", "text/html");
else
// intent.setType("message/rfc822");
intentObject.Call<AndroidJavaObject>("setType", "message/rfc822");
// intent.putExtra(Intent.EXTRA_SUBJECT, emailSubject);
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_SUBJECT"), subject);
// Setting emailBody
if (useHTML)
{
// intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(emailBody));
using (var html = new AndroidJavaClass("android.text.Html"))
{
var htmlBody = html.CallStatic<AndroidJavaObject>("fromHtml", body);
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), htmlBody);
}
}
else
{
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), body);
}
using (var unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (var currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity"))
{
currentActivity.Call("startActivity", intentObject);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并调用它SendMail("test", "Message", false);。您可以改进它并为其添加更多功能。最后一个例子是从这里解除的。
单击按钮时,您必须调用:
public void OpenActivity()
{
var androidJC = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var jo = androidJC.GetStatic<AndroidJavaObject>("currentActivity");
// Accessing the class to call a static method on it
var jc = new AndroidJavaClass("com.xyz.abc.StartActivity");
// Calling a Call method to which the current activity is passed
jc.CallStatic("Call", jo);
}
}
Run Code Online (Sandbox Code Playgroud)
将其替换为您的活动和包名称
var jc = new AndroidJavaClass("com.xyz.abc.StartActivity");
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |