Skip to content

Commit 0d8946f

Browse files
author
Adam Harris
committed
Merge pull request #40 from complex857/master
Use sendMultipartTextMessage() if the message needs to be sent in parts
2 parents 5420eed + da3df9c commit 0d8946f

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/android/Sms.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.os.Build;
1313
import android.provider.Telephony;
1414
import android.telephony.SmsManager;
15+
import java.util.ArrayList;
1516
import org.apache.cordova.CallbackContext;
1617
import org.apache.cordova.CordovaPlugin;
1718
import org.apache.cordova.PluginResult;
@@ -98,7 +99,19 @@ private void invokeSMSIntent(String phoneNumber, String message) {
9899
private void send(String phoneNumber, String message) {
99100
SmsManager manager = SmsManager.getDefault();
100101
PendingIntent sentIntent = PendingIntent.getBroadcast(this.cordova.getActivity(), 0, new Intent(INTENT_FILTER_SMS_SENT), 0);
101-
manager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
102+
103+
// Use SendMultipartTextMessage if the message requires it
104+
int parts_size = manager.divideMessage(message).size();
105+
if (parts_size > 1) {
106+
ArrayList<String> parts = manager.divideMessage(message);
107+
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
108+
for (int i = 0; i < parts_size; ++i) {
109+
sentIntents.add(sentIntent);
110+
}
111+
manager.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents, null);
112+
} else {
113+
manager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
114+
}
102115

103116
// Don't return any result now, since status results will be sent when events come in from broadcast receiver
104117
PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
@@ -116,4 +129,4 @@ public void onDestroy() {
116129
}
117130
}
118131
}
119-
}
132+
}

0 commit comments

Comments
 (0)