@@ -11,13 +11,37 @@ public class ScreenTextExtractorPlugin: NSObject, FlutterPlugin {
1111
1212 public func handle( _ call: FlutterMethodCall , result: @escaping FlutterResult ) {
1313 switch call. method {
14+ case " isAccessAllowed " :
15+ isAccessAllowed ( call, result: result)
16+ break
17+ case " requestAccess " :
18+ requestAccess ( call, result: result)
19+ break
1420 case " simulateCtrlCKeyPress " :
1521 simulateCtrlCKeyPress ( call, result: result)
1622 break
1723 default :
1824 result ( FlutterMethodNotImplemented)
1925 }
2026 }
27+
28+ public func isAccessAllowed( _ call: FlutterMethodCall , result: @escaping FlutterResult ) {
29+ result ( AXIsProcessTrusted ( ) )
30+ }
31+
32+ public func requestAccess( _ call: FlutterMethodCall , result: @escaping FlutterResult ) {
33+ let args : [ String : Any ] = call. arguments as! [ String : Any ]
34+ let onlyOpenPrefPane : Bool = args [ " onlyOpenPrefPane " ] as! Bool
35+
36+ if ( !onlyOpenPrefPane) {
37+ let options = [ kAXTrustedCheckOptionPrompt. takeRetainedValue ( ) : true ] as CFDictionary
38+ AXIsProcessTrustedWithOptions ( options)
39+ } else {
40+ let prefpaneUrl = URL ( string: " x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility " ) !
41+ NSWorkspace . shared. open ( prefpaneUrl)
42+ }
43+ result ( true )
44+ }
2145
2246 public func simulateCtrlCKeyPress( _ call: FlutterMethodCall , result: @escaping FlutterResult ) {
2347 let eventKeyDown = CGEvent ( keyboardEventSource: nil , virtualKey: CGKeyCode ( UInt32 ( kVK_ANSI_C) ) , keyDown: true ) ;
0 commit comments