I’m trying to send a multipart sms, I got sendTextMessage to work but it has a text limit.
Any help would be appreciated!!
AndroidJavaClass SMSManagerClass = new AndroidJavaClass("android.telephony.SmsManager");
AndroidJavaObject SMSManagerObject = SMSManagerClass.CallStatic<AndroidJavaObject>("getDefault");
AndroidJavaObject dividedMessage = SMSManagerObject.Call<AndroidJavaObject>("divideMessage", text);
for (int i = 0; i < dividedMessage.Call<int>("size"); i++)
{
texts.Add(dividedMessage.Call<string>("get", i));
}
SMSManagerObject.Call("sendMultipartTextMessage", phone, null, texts, null, null, zero);
Logcat says this:
Unity Error : at UnityEngine._AndroidJNIHelper.GetSignature (System.Object obj) [0x003a4] in :0
Unity at UnityEngine._AndroidJNIHelper.GetSignature (System.Object args) [0x00036] in :0
Unity at UnityEngine._AndroidJNIHelper.GetMethodID (System.IntPtr jclass, System.String methodName, System.Object args, System.Boolean isStatic) [0x00001] in :0
Unity at UnityEngine.AndroidJNIHelper.GetMethodID (System.IntPtr jclass, System.String methodName, System.Object args, System.Boolean isStatic) [0x00001] in :0
Unity at UnityEngine.AndroidJavaObject._Call (System.String methodName, System.Object args) [0x0000c] in :0
Unity at UnityEngine.AndroidJavaObject.Call (System.String methodName, System.Object args) [0x00001] in :0
Unity at SendSMS.SendProcess () [0x00114] in :0
SOLVED!
AndroidJavaClass SMSManagerClass = new AndroidJavaClass("android.telephony.SmsManager");
AndroidJavaObject SMSManagerObject = SMSManagerClass.CallStatic<AndroidJavaObject>("getDefault");
AndroidJavaObject dividedMessage = SMSManagerObject.Call<AndroidJavaObject>("divideMessage", text);
for (int i = 0; i < dividedMessage.Call<int>("size"); i++)
{
texts.Add(dividedMessage.Call<string>("get", i));
}
SMSManagerObject.Call("sendMultipartTextMessage", phone, null, ToJavaList(texts), null, null, zero);
private AndroidJavaObject ToJavaList(List<string> strings)
{
AndroidJavaObject list = new AndroidJavaObject("java.util.ArrayList");
foreach (string s in strings)
{
list.Call<bool>("add", new AndroidJavaObject("java.lang.String", s));
}
return list;
}