Skip to content

Commit 51d1fb6

Browse files
committed
Add sticky notification for android 13
1 parent 5310c1b commit 51d1fb6

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

android/app/src/main/java/com/httpsms/FirebaseMessagingService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,18 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
116116

117117
Timber.d("sending SMS for message with ID [${message.id}]")
118118
return try {
119-
// The trick here is to listen to the intent only on the last part
120119
val sentIntents = ArrayList<PendingIntent>()
121120
val deliveredIntents = ArrayList<PendingIntent>()
122121

123122
for (i in 0 until parts.size) {
124123
var id = "${message.id}.$i"
124+
125+
// Listen for 'delivered' and 'sent' intents only on the last part in the
126+
// multipart SMS message
125127
if (i == parts.size -1) {
126128
id = message.id
127129
}
130+
128131
sentIntents.add(createPendingIntent(id, SmsManagerService.sentAction(id)))
129132
deliveredIntents.add(createPendingIntent(id, SmsManagerService.deliveredAction(id)))
130133
}

android/app/src/main/java/com/httpsms/MainActivity.kt

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.app.NotificationManager
77
import android.content.Context
88
import android.content.Intent
99
import android.content.pm.PackageManager
10+
import android.os.Build
1011
import android.os.Bundle
1112
import android.telephony.PhoneNumberUtils
1213
import android.view.View
@@ -37,9 +38,6 @@ import java.util.concurrent.TimeUnit
3738

3839

3940
class MainActivity : AppCompatActivity() {
40-
private val sentReceiver = SentReceiver()
41-
private val deliveredReceiver = DeliveredReceiver()
42-
4341
override fun onCreate(savedInstanceState: Bundle?) {
4442
super.onCreate(savedInstanceState)
4543

@@ -224,7 +222,10 @@ class MainActivity : AppCompatActivity() {
224222
) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
225223
context,
226224
Manifest.permission.READ_PHONE_STATE
227-
) == PackageManager.PERMISSION_GRANTED
225+
) == PackageManager.PERMISSION_GRANTED && (Build.VERSION.SDK_INT < 33 || ActivityCompat.checkSelfPermission(
226+
context,
227+
Manifest.permission.POST_NOTIFICATIONS
228+
) == PackageManager.PERMISSION_GRANTED)
228229
) {
229230
return true
230231
}
@@ -266,16 +267,20 @@ class MainActivity : AppCompatActivity() {
266267
}
267268
}
268269

269-
requestPermissionLauncher.launch(
270-
arrayOf(
271-
Manifest.permission.SEND_SMS,
272-
Manifest.permission.RECEIVE_SMS,
273-
READ_PHONE_NUMBERS,
274-
Manifest.permission.READ_SMS,
275-
Manifest.permission.READ_PHONE_STATE
276-
)
270+
var permissions = arrayOf(
271+
Manifest.permission.SEND_SMS,
272+
Manifest.permission.RECEIVE_SMS,
273+
READ_PHONE_NUMBERS,
274+
Manifest.permission.READ_SMS,
275+
Manifest.permission.READ_PHONE_STATE
277276
)
278277

278+
if(Build.VERSION.SDK_INT > 33) {
279+
permissions += Manifest.permission.POST_NOTIFICATIONS
280+
}
281+
282+
requestPermissionLauncher.launch(permissions)
283+
279284
Timber.d("creating permissions launcher")
280285
}
281286

0 commit comments

Comments
 (0)