Skip to content

Instantly share code, notes, and snippets.

@rmdwirizki
Last active October 29, 2023 20:39
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save rmdwirizki/87f9e68c7ef6ef809a777eb25f12c3b2 to your computer and use it in GitHub Desktop.
Save rmdwirizki/87f9e68c7ef6ef809a777eb25f12c3b2 to your computer and use it in GitHub Desktop.
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");
}
}
@aygin
Copy link

aygin commented Jul 12, 2018

I found it!

  1. you should use the directory in line 2 for AndroidManifest.xml
  2. change line 6 (package information) of AndroidManifest file according to your package

@RicardoMen
Copy link

Doesn't work for me, can you give me a example? y put the number, and send() at boton fuction, but nothing happend.

@Ahere
Copy link

Ahere commented Oct 17, 2019

Hi. Thanks for making this, I keep getting one error though. My game always exits after the message is sent. Could there be something I am doing wrong?

@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