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 {
@@ -18,26 +20,51 @@ class SmsManagerService {
1820 fun deliveredAction (messageID : String ): String {
1921 return " $ACTION_SMS_DELIVERED .$messageID "
2022 }
23+
24+ @SuppressLint(" MissingPermission" )
25+ fun isDualSIM (context : Context ) : Boolean {
26+ val localSubscriptionManager: SubscriptionManager = if (Build .VERSION .SDK_INT < 31 ) {
27+ SubscriptionManager .from(context)
28+ } else {
29+ context.getSystemService(SubscriptionManager ::class .java)
30+ }
31+ return localSubscriptionManager.activeSubscriptionInfoList.size > 1
32+ }
2133 }
2234
2335 fun messageParts (context : Context , content : String ): ArrayList <String > {
2436 return getSmsManager(context).divideMessage(content)
2537 }
2638
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)
39+ fun sendMultipartMessage (context : Context , contact : String , parts : ArrayList <String >, sim : String , sendIntents : ArrayList <PendingIntent >, deliveryIntents : ArrayList <PendingIntent >) {
40+ getSmsManager(context, sim ).sendMultipartTextMessage(contact, null , parts, sendIntents, deliveryIntents)
2941 }
3042
31- fun sendTextMessage (context : Context , contact : String , content : String , sentIntent : PendingIntent , deliveryIntent : PendingIntent ) {
32- getSmsManager(context).sendTextMessage(contact, null , content, sentIntent, deliveryIntent)
43+ fun sendTextMessage (context : Context , contact : String , content : String , sim : String , sentIntent : PendingIntent , deliveryIntent : PendingIntent ) {
44+ getSmsManager(context, sim ).sendTextMessage(contact, null , content, sentIntent, deliveryIntent)
3345 }
3446
3547 @Suppress(" DEPRECATION" )
36- private fun getSmsManager (context : Context ): SmsManager {
48+ @SuppressLint(" MissingPermission" )
49+ private fun getSmsManager (context : Context , sim : String = "DEFAULT "): SmsManager {
50+ val localSubscriptionManager: SubscriptionManager = if (Build .VERSION .SDK_INT < 31 ) {
51+ SubscriptionManager .from(context)
52+ } else {
53+ context.getSystemService(SubscriptionManager ::class .java)
54+ }
55+
56+ val subscriptionId = if (sim == " SIM1" && localSubscriptionManager.activeSubscriptionInfoList.size > 0 ) {
57+ localSubscriptionManager.activeSubscriptionInfoList[0 ].subscriptionId
58+ } else if (sim == " SIM2" && localSubscriptionManager.activeSubscriptionInfoList.size > 1 ) {
59+ localSubscriptionManager.activeSubscriptionInfoList[1 ].subscriptionId
60+ } else {
61+ SubscriptionManager .getDefaultSmsSubscriptionId()
62+ }
63+
3764 return if (Build .VERSION .SDK_INT < 31 ) {
38- SmsManager .getDefault( )
65+ SmsManager .getSmsManagerForSubscriptionId(subscriptionId )
3966 } else {
40- context.getSystemService(SmsManager ::class .java)
67+ context.getSystemService(SmsManager ::class .java).createForSubscriptionId(subscriptionId)
4168 }
4269 }
4370}
0 commit comments