Skip to content

Commit db8c5e6

Browse files
Prevent crash of telephoy listener method for Java advanced audio drive
1 parent 21b27f8 commit db8c5e6

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,14 +1000,34 @@ 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) {
1030+
// add snippet code from Jint
10111031
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
10121032
isPhoneStateListenerRegistered = true;
10131033
}
@@ -1020,6 +1040,12 @@ private void unRegisterPhoneStateListener() {
10201040
return;
10211041
}
10221042

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

0 commit comments

Comments
 (0)