Skip to content

Commit a2f2e4f

Browse files
authored
feat(Permissions): allow microphone check (#3068)
1 parent 179104c commit a2f2e4f

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

android/capacitor/src/main/java/com/getcapacitor/plugin/Permissions.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public void query(PluginCall call) {
3737
case "clipboard-read":
3838
case "clipboard-write":
3939
checkClipboard(call);
40+
case "microphone":
41+
checkMicrophone(call);
4042
break;
4143
default:
4244
call.reject("Unknown permission type");
@@ -80,4 +82,8 @@ private void checkClipboard(PluginCall call) {
8082
call.resolve(ret);
8183
}
8284

85+
private void checkMicrophone(PluginCall call) {
86+
checkPerm(Manifest.permission.RECORD_AUDIO, call);
87+
}
88+
8389
}

core/src/core-plugin-definitions.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1348,7 +1348,8 @@ export enum PermissionType {
13481348
Geolocation = 'geolocation',
13491349
Notifications = 'notifications',
13501350
ClipboardRead = 'clipboard-read',
1351-
ClipboardWrite = 'clipboard-write'
1351+
ClipboardWrite = 'clipboard-write',
1352+
Microphone = 'microphone'
13521353
}
13531354

13541355
export interface PermissionsOptions {

ios/Capacitor/Capacitor/Plugins/Permissions.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public class CAPPermissionsPlugin: CAPPlugin {
2525
return checkClipboard(call)
2626
case "photos":
2727
return checkPhotos(call)
28+
case "microphone":
29+
return checkMicrophone(call)
2830
default:
2931
return call.reject("Unknown permission type")
3032
}
@@ -108,4 +110,22 @@ public class CAPPermissionsPlugin: CAPPlugin {
108110
"state": "granted"
109111
])
110112
}
113+
114+
func checkMicrophone(_ call: CAPPluginCall) {
115+
let microStatus = AVCaptureDevice.authorizationStatus(for: .audio)
116+
117+
var ret = "prompt"
118+
switch (microStatus) {
119+
case .authorized:
120+
ret = "granted"
121+
case .denied, .restricted:
122+
ret = "denied"
123+
case .notDetermined:
124+
ret = "prompt"
125+
}
126+
127+
call.resolve([
128+
"state": ret
129+
])
130+
}
111131
}

0 commit comments

Comments
 (0)