22
22
import android .content .IntentFilter ;
23
23
import android .content .BroadcastReceiver ;
24
24
import android .content .pm .PackageManager ;
25
- import android .Manifest .permission ;
26
25
//import android.media.AudioAttributes; // --- for API 21+
27
26
import android .media .AudioManager ;
28
27
import android .media .AudioDeviceInfo ;
69
68
public class InCallManagerModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
70
69
private static final String REACT_NATIVE_MODULE_NAME = "InCallManager" ;
71
70
private static final String TAG = REACT_NATIVE_MODULE_NAME ;
72
- private static SparseArray <Promise > mRequestPermissionCodePromises ;
73
- private static SparseArray <String > mRequestPermissionCodeTargetPermission ;
74
71
private String mPackageName = "com.zxcpoiu.incallmanager" ;
75
72
76
73
// --- Screen Manager
@@ -112,8 +109,6 @@ public class InCallManagerModule extends ReactContextBaseJavaModule implements L
112
109
private MyPlayerInterface mBusytone ;
113
110
private Handler mRingtoneCountDownHandler ;
114
111
private String media = "audio" ;
115
- private static String recordPermission = "unknow" ;
116
- private static String cameraPermission = "unknow" ;
117
112
118
113
private static final String SPEAKERPHONE_AUTO = "auto" ;
119
114
private static final String SPEAKERPHONE_TRUE = "true" ;
@@ -196,8 +191,6 @@ public InCallManagerModule(ReactApplicationContext reactContext) {
196
191
audioUriMap .put ("bundleRingtoneUri" , bundleRingtoneUri );
197
192
audioUriMap .put ("bundleRingbackUri" , bundleRingbackUri );
198
193
audioUriMap .put ("bundleBusytoneUri" , bundleBusytoneUri );
199
- mRequestPermissionCodePromises = new SparseArray <Promise >();
200
- mRequestPermissionCodeTargetPermission = new SparseArray <String >();
201
194
mOnFocusChangeListener = new OnFocusChangeListener ();
202
195
bluetoothManager = AppRTCBluetoothManager .create (reactContext , this );
203
196
proximityManager = InCallProximityManager .create (reactContext , this );
@@ -1407,79 +1400,6 @@ public boolean isPlaying() {
1407
1400
}
1408
1401
// ===== Internal Classes End =====
1409
1402
1410
- // ===== Permission Start =====
1411
- @ ReactMethod
1412
- public void checkRecordPermission (Promise promise ) {
1413
- Log .d (TAG , "RNInCallManager.checkRecordPermission(): enter" );
1414
- _checkRecordPermission ();
1415
- if (recordPermission .equals ("unknow" )) {
1416
- Log .d (TAG , "RNInCallManager.checkRecordPermission(): failed" );
1417
- promise .reject (new Exception ("checkRecordPermission failed" ));
1418
- } else {
1419
- promise .resolve (recordPermission );
1420
- }
1421
- }
1422
-
1423
- @ ReactMethod
1424
- public void checkCameraPermission (Promise promise ) {
1425
- Log .d (TAG , "RNInCallManager.checkCameraPermission(): enter" );
1426
- _checkCameraPermission ();
1427
- if (cameraPermission .equals ("unknow" )) {
1428
- Log .d (TAG , "RNInCallManager.checkCameraPermission(): failed" );
1429
- promise .reject (new Exception ("checkCameraPermission failed" ));
1430
- } else {
1431
- promise .resolve (cameraPermission );
1432
- }
1433
- }
1434
-
1435
- private void _checkRecordPermission () {
1436
- recordPermission = _checkPermission (permission .RECORD_AUDIO );
1437
- Log .d (TAG , String .format ("RNInCallManager.checkRecordPermission(): recordPermission=%s" , recordPermission ));
1438
- }
1439
-
1440
- private void _checkCameraPermission () {
1441
- cameraPermission = _checkPermission (permission .CAMERA );
1442
- Log .d (TAG , String .format ("RNInCallManager.checkCameraPermission(): cameraPermission=%s" , cameraPermission ));
1443
- }
1444
-
1445
- private String _checkPermission (String targetPermission ) {
1446
- try {
1447
- ReactContext reactContext = getReactApplicationContext ();
1448
- if (ContextCompat .checkSelfPermission (reactContext , targetPermission ) == PackageManager .PERMISSION_GRANTED ) {
1449
- return "granted" ;
1450
- } else {
1451
- return "denied" ;
1452
- }
1453
- } catch (Exception e ) {
1454
- Log .d (TAG , "_checkPermission() catch" );
1455
- return "denied" ;
1456
- }
1457
- }
1458
-
1459
- @ ReactMethod
1460
- public void requestRecordPermission (Promise promise ) {
1461
- Log .d (TAG , "RNInCallManager.requestRecordPermission(): enter" );
1462
- _checkRecordPermission ();
1463
- if (!recordPermission .equals ("granted" )) {
1464
- _requestPermission (permission .RECORD_AUDIO , promise );
1465
- } else {
1466
- // --- already granted
1467
- promise .resolve (recordPermission );
1468
- }
1469
- }
1470
-
1471
- @ ReactMethod
1472
- public void requestCameraPermission (Promise promise ) {
1473
- Log .d (TAG , "RNInCallManager.requestCameraPermission(): enter" );
1474
- _checkCameraPermission ();
1475
- if (!cameraPermission .equals ("granted" )) {
1476
- _requestPermission (permission .CAMERA , promise );
1477
- } else {
1478
- // --- already granted
1479
- promise .resolve (cameraPermission );
1480
- }
1481
- }
1482
-
1483
1403
@ ReactMethod
1484
1404
public void chooseAudioRoute (String audioRoute , Promise promise ) {
1485
1405
Log .d (TAG , "RNInCallManager.chooseAudioRoute(): user choose audioDevice = " + audioRoute );
@@ -1496,33 +1416,6 @@ public void chooseAudioRoute(String audioRoute, Promise promise) {
1496
1416
promise .resolve (getAudioDeviceStatusMap ());
1497
1417
}
1498
1418
1499
- private void _requestPermission (String targetPermission , Promise promise ) {
1500
- Activity currentActivity = getCurrentActivity ();
1501
- if (currentActivity == null ) {
1502
- Log .d (TAG , String .format ("RNInCallManager._requestPermission(): ReactContext doesn't hava any Activity attached when requesting %s" , targetPermission ));
1503
- promise .reject (new Exception ("_requestPermission(): currentActivity is not attached" ));
1504
- return ;
1505
- }
1506
- int requestPermissionCode = getRandomInteger (1 , 65535 );
1507
- while (mRequestPermissionCodePromises .get (requestPermissionCode , null ) != null ) {
1508
- requestPermissionCode = getRandomInteger (1 , 65535 );
1509
- }
1510
- mRequestPermissionCodePromises .put (requestPermissionCode , promise );
1511
- mRequestPermissionCodeTargetPermission .put (requestPermissionCode , targetPermission );
1512
- /*
1513
- if (ActivityCompat.shouldShowRequestPermissionRationale(currentActivity, permission.RECORD_AUDIO)) {
1514
- showMessageOKCancel("You need to allow access to microphone for making call", new DialogInterface.OnClickListener() {
1515
- @Override
1516
- public void onClick(DialogInterface dialog, int which) {
1517
- ActivityCompat.requestPermissions(currentActivity, new String[] {permission.RECORD_AUDIO}, requestPermissionCode);
1518
- }
1519
- });
1520
- return;
1521
- }
1522
- */
1523
- ActivityCompat .requestPermissions (currentActivity , new String [] {targetPermission }, requestPermissionCode );
1524
- }
1525
-
1526
1419
private static int getRandomInteger (int min , int max ) {
1527
1420
if (min >= max ) {
1528
1421
throw new IllegalArgumentException ("max must be greater than min" );
@@ -1531,47 +1424,6 @@ private static int getRandomInteger(int min, int max) {
1531
1424
return random .nextInt ((max - min ) + 1 ) + min ;
1532
1425
}
1533
1426
1534
- protected static void onRequestPermissionsResult (int requestCode , String [] permissions , int [] grantResults ) {
1535
- Log .d (TAG , "RNInCallManager.onRequestPermissionsResult(): enter" );
1536
- Promise promise = mRequestPermissionCodePromises .get (requestCode , null );
1537
- String targetPermission = mRequestPermissionCodeTargetPermission .get (requestCode , null );
1538
- mRequestPermissionCodePromises .delete (requestCode );
1539
- mRequestPermissionCodeTargetPermission .delete (requestCode );
1540
- if (promise != null && targetPermission != null ) {
1541
-
1542
- Map <String , Integer > permissionResultMap = new HashMap <String , Integer >();
1543
-
1544
- for (int i = 0 ; i < permissions .length ; i ++) {
1545
- permissionResultMap .put (permissions [i ], grantResults [i ]);
1546
- }
1547
-
1548
- if (!permissionResultMap .containsKey (targetPermission )) {
1549
- Log .wtf (TAG , String .format ("RNInCallManager.onRequestPermissionsResult(): requested permission %s but did not appear" , targetPermission ));
1550
- promise .reject (String .format ("%s_PERMISSION_NOT_FOUND" , targetPermission ), String .format ("requested permission %s but did not appear" , targetPermission ));
1551
- return ;
1552
- }
1553
-
1554
- String _requestPermissionResult = "unknow" ;
1555
- if (permissionResultMap .get (targetPermission ) == PackageManager .PERMISSION_GRANTED ) {
1556
- _requestPermissionResult = "granted" ;
1557
- } else {
1558
- _requestPermissionResult = "denied" ;
1559
- }
1560
-
1561
- if (targetPermission .equals (permission .RECORD_AUDIO )) {
1562
- recordPermission = _requestPermissionResult ;
1563
- } else if (targetPermission .equals (permission .CAMERA )) {
1564
- cameraPermission = _requestPermissionResult ;
1565
- }
1566
- promise .resolve (_requestPermissionResult );
1567
- } else {
1568
- //super.onRequestPermissionsResult(requestCode, permissions, grantResults);
1569
- Log .wtf (TAG , "RNInCallManager.onRequestPermissionsResult(): request code not found" );
1570
- promise .reject ("PERMISSION_REQUEST_CODE_NOT_FOUND" , "request code not found" );
1571
- }
1572
- }
1573
- // ===== Permission End =====
1574
-
1575
1427
private void pause () {
1576
1428
if (audioManagerActivated ) {
1577
1429
Log .d (TAG , "pause audioRouteManager" );
0 commit comments