11package com.httpsms
22
3+ import android.annotation.SuppressLint
34import android.app.PendingIntent
45import android.content.Context
56import android.os.Build
67import android.telephony.SmsManager
8+ import android.telephony.SubscriptionManager
79
810
911class SmsManagerService {
@@ -24,20 +26,35 @@ class SmsManagerService {
2426 return getSmsManager(context).divideMessage(content)
2527 }
2628
27- fun sendMultipartMessage (context : Context , contact : String , parts : ArrayList <String >, sendIntents : ArrayList <PendingIntent >, deliveryIntents : ArrayList <PendingIntent >) {
28- getSmsManager(context).sendMultipartTextMessage(contact, null , parts, sendIntents, deliveryIntents)
29+ fun sendMultipartMessage (context : Context , contact : String , parts : ArrayList <String >, sim : String , sendIntents : ArrayList <PendingIntent >, deliveryIntents : ArrayList <PendingIntent >) {
30+ getSmsManager(context, sim ).sendMultipartTextMessage(contact, null , parts, sendIntents, deliveryIntents)
2931 }
3032
31- fun sendTextMessage (context : Context , contact : String , content : String , sentIntent : PendingIntent , deliveryIntent : PendingIntent ) {
32- getSmsManager(context).sendTextMessage(contact, null , content, sentIntent, deliveryIntent)
33+ fun sendTextMessage (context : Context , contact : String , content : String , sim : String , sentIntent : PendingIntent , deliveryIntent : PendingIntent ) {
34+ getSmsManager(context, sim ).sendTextMessage(contact, null , content, sentIntent, deliveryIntent)
3335 }
3436
3537 @Suppress(" DEPRECATION" )
36- private fun getSmsManager (context : Context ): SmsManager {
38+ @SuppressLint(" MissingPermission" )
39+ private fun getSmsManager (context : Context , sim : String = "DEFAULT "): SmsManager {
40+ val localSubscriptionManager: SubscriptionManager = if (Build .VERSION .SDK_INT < 31 ) {
41+ SubscriptionManager .from(context)
42+ } else {
43+ context.getSystemService(SubscriptionManager ::class .java)
44+ }
45+
46+ val subscriptionId = if (sim == " ISMS" && localSubscriptionManager.activeSubscriptionInfoList.size > 0 ) {
47+ localSubscriptionManager.activeSubscriptionInfoList[0 ].subscriptionId
48+ } else if (sim == " ISMS2" && localSubscriptionManager.activeSubscriptionInfoList.size > 1 ) {
49+ localSubscriptionManager.activeSubscriptionInfoList[1 ].subscriptionId
50+ } else {
51+ SubscriptionManager .getDefaultSmsSubscriptionId()
52+ }
53+
3754 return if (Build .VERSION .SDK_INT < 31 ) {
38- SmsManager .getDefault( )
55+ SmsManager .getSmsManagerForSubscriptionId(subscriptionId )
3956 } else {
40- context.getSystemService(SmsManager ::class .java)
57+ context.getSystemService(SmsManager ::class .java).createForSubscriptionId(subscriptionId)
4158 }
4259 }
4360}
0 commit comments