Skip to content

Commit 21b27f8

Browse files
Prevent crash of telephoy listener method for Kotlin advanced audio drive
1 parent 952e665 commit 21b27f8

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

Advanced-Audio-Driver-Kotlin/app/src/main/java/com/tokbox/sample/advancedaudiodriver/AdvancedAudioDevice.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,13 +1000,32 @@ private void unregisterBtReceiver() {
10001000

10011001
private boolean isPhoneStateListenerRegistered;
10021002

1003+
//Phone state permissions are required to from Api 31. Adding this check to avoid crash.
1004+
private boolean hasPhoneStatePermission() {
1005+
if (Build.VERSION.SDK_INT >= 31) {
1006+
if (context.checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
1007+
!= PackageManager.PERMISSION_GRANTED) {
1008+
log.e("Some features may not be available unless the phone permissions has been granted explicitly " +
1009+
"in the App settings.");
1010+
return false;
1011+
}
1012+
}
1013+
return true;
1014+
}
1015+
10031016
private void registerPhoneStateListener() {
10041017
Log.d(TAG, "registerPhoneStateListener() called");
10051018

10061019
if (isPhoneStateListenerRegistered) {
10071020
return;
10081021
}
10091022

1023+
if (!hasPhoneStatePermission()) {
1024+
log.d("No Phone State permissions. Register phoneStateListener cannot " +
1025+
"be completed.");
1026+
return;
1027+
}
1028+
10101029
if (telephonyManager != null) {
10111030
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
10121031
isPhoneStateListenerRegistered = true;
@@ -1020,6 +1039,12 @@ private void unRegisterPhoneStateListener() {
10201039
return;
10211040
}
10221041

1042+
if (!hasPhoneStatePermission()) {
1043+
log.d("No Phone State permissions. Register phoneStateListener cannot " +
1044+
"be completed.");
1045+
return;
1046+
}
1047+
10231048
if (telephonyManager != null) {
10241049
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
10251050
isPhoneStateListenerRegistered = false;

0 commit comments

Comments
 (0)