Skip to content

Commit a6e7672

Browse files
committed
remove permission related codes
Use another permission modules instead. User is responsible for checking permissions prior to use this lib.
1 parent 64b2fe5 commit a6e7672

File tree

4 files changed

+0
-291
lines changed

4 files changed

+0
-291
lines changed

android/src/main/java/com/zxcpoiu/incallmanager/InCallManagerModule.java

Lines changed: 0 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import android.content.IntentFilter;
2323
import android.content.BroadcastReceiver;
2424
import android.content.pm.PackageManager;
25-
import android.Manifest.permission;
2625
//import android.media.AudioAttributes; // --- for API 21+
2726
import android.media.AudioManager;
2827
import android.media.AudioDeviceInfo;
@@ -69,8 +68,6 @@
6968
public class InCallManagerModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
7069
private static final String REACT_NATIVE_MODULE_NAME = "InCallManager";
7170
private static final String TAG = REACT_NATIVE_MODULE_NAME;
72-
private static SparseArray<Promise> mRequestPermissionCodePromises;
73-
private static SparseArray<String> mRequestPermissionCodeTargetPermission;
7471
private String mPackageName = "com.zxcpoiu.incallmanager";
7572

7673
// --- Screen Manager
@@ -112,8 +109,6 @@ public class InCallManagerModule extends ReactContextBaseJavaModule implements L
112109
private MyPlayerInterface mBusytone;
113110
private Handler mRingtoneCountDownHandler;
114111
private String media = "audio";
115-
private static String recordPermission = "unknow";
116-
private static String cameraPermission = "unknow";
117112

118113
private static final String SPEAKERPHONE_AUTO = "auto";
119114
private static final String SPEAKERPHONE_TRUE = "true";
@@ -196,8 +191,6 @@ public InCallManagerModule(ReactApplicationContext reactContext) {
196191
audioUriMap.put("bundleRingtoneUri", bundleRingtoneUri);
197192
audioUriMap.put("bundleRingbackUri", bundleRingbackUri);
198193
audioUriMap.put("bundleBusytoneUri", bundleBusytoneUri);
199-
mRequestPermissionCodePromises = new SparseArray<Promise>();
200-
mRequestPermissionCodeTargetPermission = new SparseArray<String>();
201194
mOnFocusChangeListener = new OnFocusChangeListener();
202195
bluetoothManager = AppRTCBluetoothManager.create(reactContext, this);
203196
proximityManager = InCallProximityManager.create(reactContext, this);
@@ -1407,79 +1400,6 @@ public boolean isPlaying() {
14071400
}
14081401
// ===== Internal Classes End =====
14091402

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-
14831403
@ReactMethod
14841404
public void chooseAudioRoute(String audioRoute, Promise promise) {
14851405
Log.d(TAG, "RNInCallManager.chooseAudioRoute(): user choose audioDevice = " + audioRoute);
@@ -1496,33 +1416,6 @@ public void chooseAudioRoute(String audioRoute, Promise promise) {
14961416
promise.resolve(getAudioDeviceStatusMap());
14971417
}
14981418

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-
15261419
private static int getRandomInteger(int min, int max) {
15271420
if (min >= max) {
15281421
throw new IllegalArgumentException("max must be greater than min");
@@ -1531,47 +1424,6 @@ private static int getRandomInteger(int min, int max) {
15311424
return random.nextInt((max - min) + 1) + min;
15321425
}
15331426

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-
15751427
private void pause() {
15761428
if (audioManagerActivated) {
15771429
Log.d(TAG, "pause audioRouteManager");

android/src/main/java/com/zxcpoiu/incallmanager/InCallManagerPackage.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,4 @@ public List<ViewManager> createViewManagers(ReactApplicationContext reactContext
4242
return Collections.emptyList();
4343
}
4444

45-
public static void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
46-
InCallManagerModule.onRequestPermissionsResult(requestCode, permissions, grantResults);
47-
}
4845
}

index.js

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,11 @@ import {
88
class InCallManager {
99
constructor() {
1010
this.vibrate = false;
11-
this.recordPermission = 'unknow';
12-
this.cameraPermission = 'unknow';
1311
this.audioUriMap = {
1412
ringtone: { _BUNDLE_: null, _DEFAULT_: null},
1513
ringback: { _BUNDLE_: null, _DEFAULT_: null},
1614
busytone: { _BUNDLE_: null, _DEFAULT_: null},
1715
};
18-
this.checkRecordPermission = this.checkRecordPermission.bind(this);
19-
this.requestRecordPermission = this.requestRecordPermission.bind(this);
20-
this.checkCameraPermission = this.checkCameraPermission.bind(this);
21-
this.requestCameraPermission = this.requestCameraPermission.bind(this);
22-
this.checkRecordPermission();
23-
this.checkCameraPermission();
2416
}
2517

2618
start(setup) {
@@ -120,34 +112,6 @@ class InCallManager {
120112
_InCallManager.stopRingback();
121113
}
122114

123-
async checkRecordPermission() {
124-
// --- on android which api < 23, it will always be "granted"
125-
let result = await _InCallManager.checkRecordPermission();
126-
this.recordPermission = result;
127-
return result;
128-
}
129-
130-
async requestRecordPermission() {
131-
// --- on android which api < 23, it will always be "granted"
132-
let result = await _InCallManager.requestRecordPermission();
133-
this.recordPermission = result;
134-
return result;
135-
}
136-
137-
async checkCameraPermission() {
138-
// --- on android which api < 23, it will always be "granted"
139-
let result = await _InCallManager.checkCameraPermission();
140-
this.cameraPermission = result;
141-
return result;
142-
}
143-
144-
async requestCameraPermission() {
145-
// --- on android which api < 23, it will always be "granted"
146-
let result = await _InCallManager.requestCameraPermission();
147-
this.cameraPermission = result;
148-
return result;
149-
}
150-
151115
pokeScreen(_timeout) {
152116
if (Platform.OS === 'android') {
153117
let timeout = (typeof _timeout === "number" && _timeout > 0) ? _timeout : 3000; // --- default 3000 ms

ios/RNInCallManager/RNInCallManager.m

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ @implementation RNInCallManager
5656
NSString *_origAudioMode;
5757
BOOL _audioSessionInitialized;
5858
int _forceSpeakerOn;
59-
NSString *_recordPermission;
60-
NSString *_cameraPermission;
6159
NSString *_media;
6260
}
6361

@@ -106,8 +104,6 @@ - (instancetype)init
106104
_origAudioMode = nil;
107105
_audioSessionInitialized = NO;
108106
_forceSpeakerOn = 0;
109-
_recordPermission = nil;
110-
_cameraPermission = nil;
111107
_media = @"audio";
112108

113109
NSLog(@"RNInCallManager.init(): initialized");
@@ -134,10 +130,6 @@ - (void)dealloc
134130
if (_audioSessionInitialized) {
135131
return;
136132
}
137-
if (![_recordPermission isEqualToString:@"granted"]) {
138-
NSLog(@"RNInCallManager.start(): recordPermission should be granted. state: %@", _recordPermission);
139-
return;
140-
}
141133
_media = mediaType;
142134

143135
// --- auto is always true on ios
@@ -416,102 +408,6 @@ - (void)dealloc
416408
}
417409
}
418410

419-
- (void)_checkRecordPermission
420-
{
421-
NSString *recordPermission = @"unsupported";
422-
switch ([_audioSession recordPermission]) {
423-
case AVAudioSessionRecordPermissionGranted:
424-
recordPermission = @"granted";
425-
break;
426-
case AVAudioSessionRecordPermissionDenied:
427-
recordPermission = @"denied";
428-
break;
429-
case AVAudioSessionRecordPermissionUndetermined:
430-
recordPermission = @"undetermined";
431-
break;
432-
default:
433-
recordPermission = @"unknow";
434-
break;
435-
}
436-
_recordPermission = recordPermission;
437-
NSLog(@"RNInCallManager._checkRecordPermission(): recordPermission=%@", _recordPermission);
438-
}
439-
440-
RCT_EXPORT_METHOD(checkRecordPermission:(RCTPromiseResolveBlock)resolve
441-
reject:(RCTPromiseRejectBlock)reject)
442-
{
443-
[self _checkRecordPermission];
444-
if (_recordPermission != nil) {
445-
resolve(_recordPermission);
446-
} else {
447-
reject(@"error_code", @"error message", RCTErrorWithMessage(@"checkRecordPermission is nil"));
448-
}
449-
}
450-
451-
RCT_EXPORT_METHOD(requestRecordPermission:(RCTPromiseResolveBlock)resolve
452-
reject:(RCTPromiseRejectBlock)reject)
453-
{
454-
NSLog(@"RNInCallManager.requestRecordPermission(): waiting for user confirmation...");
455-
[_audioSession requestRecordPermission:^(BOOL granted) {
456-
if (granted) {
457-
self->_recordPermission = @"granted";
458-
} else {
459-
self->_recordPermission = @"denied";
460-
}
461-
NSLog(@"RNInCallManager.requestRecordPermission(): %@", self->_recordPermission);
462-
resolve(self->_recordPermission);
463-
}];
464-
}
465-
466-
- (NSString *)_checkMediaPermission:(NSString *)targetMediaType
467-
{
468-
switch ([AVCaptureDevice authorizationStatusForMediaType:targetMediaType]) {
469-
case AVAuthorizationStatusAuthorized:
470-
return @"granted";
471-
case AVAuthorizationStatusDenied:
472-
return @"denied";
473-
case AVAuthorizationStatusNotDetermined:
474-
return @"undetermined";
475-
case AVAuthorizationStatusRestricted:
476-
return @"restricted";
477-
default:
478-
return @"unknow";
479-
}
480-
}
481-
482-
- (void)_checkCameraPermission
483-
{
484-
_cameraPermission = [self _checkMediaPermission:AVMediaTypeVideo];
485-
NSLog(@"RNInCallManager._checkCameraPermission(): using iOS7 api. cameraPermission=%@", _cameraPermission);
486-
}
487-
488-
RCT_EXPORT_METHOD(checkCameraPermission:(RCTPromiseResolveBlock)resolve
489-
reject:(RCTPromiseRejectBlock)reject)
490-
{
491-
[self _checkCameraPermission];
492-
if (_cameraPermission != nil) {
493-
resolve(_cameraPermission);
494-
} else {
495-
reject(@"error_code", @"error message", RCTErrorWithMessage(@"checkCameraPermission is nil"));
496-
}
497-
}
498-
499-
RCT_EXPORT_METHOD(requestCameraPermission:(RCTPromiseResolveBlock)resolve
500-
reject:(RCTPromiseRejectBlock)reject)
501-
{
502-
NSLog(@"RNInCallManager.requestCameraPermission(): waiting for user confirmation...");
503-
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo
504-
completionHandler:^(BOOL granted) {
505-
if (granted) {
506-
self->_cameraPermission = @"granted";
507-
} else {
508-
self->_cameraPermission = @"denied";
509-
}
510-
NSLog(@"RNInCallManager.requestCameraPermission(): %@", self->_cameraPermission);
511-
resolve(self->_cameraPermission);
512-
}];
513-
}
514-
515411
RCT_EXPORT_METHOD(getAudioUriJS:(NSString *)audioType
516412
fileType:(NSString *)fileType
517413
resolve:(RCTPromiseResolveBlock)resolve

0 commit comments

Comments
 (0)