1212import android .os .Build ;
1313import android .provider .Telephony ;
1414import android .telephony .SmsManager ;
15+ import java .util .ArrayList ;
1516import org .apache .cordova .CallbackContext ;
1617import org .apache .cordova .CordovaPlugin ;
1718import 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