Skip to content

Instantly share code, notes, and snippets.

@rmdwirizki
Last active January 31, 2023 11:34
Embed
What would you like to do?
Sample How to Send SMS in Android using Unity3D and SMS Manager. (without opening SMS Composer)
<?xml version="1.0" encoding="utf-8"?>
<!-- Directory : [Project]/Assets/Plugins/Android/AndroidManifest.xml -->
<!-- Configure according to your android application information. -->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
android:installLocation="preferExternal"
android:versionCode="1"
android:versionName="1.0">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<!-- REQUIRED permission -->
<uses-permission android:name="android.permission.SEND_SMS" />
<!-- Additional -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SMS_RECEIVED" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:theme="@style/UnityThemeSelector"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
</application>
</manifest>
using UnityEngine;
public class SendSMS : MonoBehaviour
{
AndroidJavaObject currentActivity;
public void Send(string phone)
{
if (Application.platform == RuntimePlatform.Android)
{
RunAndroidUiThread();
}
}
void RunAndroidUiThread()
{
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(SendProcess));
}
void SendProcess()
{
Debug.Log("Running on UI thread");
AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
// SMS Information
string phone = "08888888888";
string text = "Hello World. This SMS is sent using Android SMS Manager.";
string alert;
try
{
// SMS Manager
AndroidJavaClass SMSManagerClass = new AndroidJavaClass("android.telephony.SmsManager");
AndroidJavaObject SMSManagerObject = SMSManagerClass.CallStatic<AndroidJavaObject>("getDefault");
SMSManagerObject.Call("sendTextMessage", phone, null, text, null, null);
alert = "Message sent successfully.";
}
catch (System.Exception e)
{
Debug.Log("Error : " + e.StackTrace.ToString());
alert = "Error has been Occurred. Fail to send message.";
}
// Show Toast
AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", alert);
AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT"));
toast.Call("show");
}
}
@devzhuchuanbo
Copy link

Works fine on Unity 2017.4.27f1 (64-bit), but crashed on unity 2019.2.11f1

@AliBinNaeem
Copy link

Just get an Android error "Error has been Occurred. Fail to send message".

Same here

@AliBinNaeem
Copy link

help, i do not understand how to implement it, i always have the error "Error has been Occurred. Fail to send message"

Check your xml path

@axel-martinez
Copy link

hola
necesito ayuda con este código, ya que lo ocupo para un proyecto

@Cunibon
Copy link

Cunibon commented Sep 28, 2020

Hey im trying to implement this code but it wont work, could it be that this is impossible in newer android versions?

@rmdwirizki
Copy link
Author

@Cunibon I'm sorry to say that I don't know, android often updating their spec and API on the newer version, especially permission issue.. I haven't touched Unity and Android in the last couple of years, I'll check and let let you know if I have the time

@Cunibon
Copy link

Cunibon commented Sep 29, 2020

@rmdwirizki that would be great. I've been trying to get an answer on reddit or stackoverflow for months now didnt expect to actually get an answer here 👍

@mfahadasghar
Copy link

Don't forget to go to your app in android and give permission to the app to send SMS. It will solve a lot of issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment