2011-08-03 20 views
6

Ứng dụng ca cao sử dụng API NSAccessibility yêu cầu "bật quyền truy cập cho thiết bị trợ giúp" để được kiểm tra trong ngăn truy cập Universal pref. Tôi đã nhìn thấy nhiều ứng dụng bật một cảnh báo nếu điều này bị tắt khi chúng chạy. Làm cách nào để kiểm tra theo chương trình nếu tính năng này được bật để tôi có thể hiển thị cảnh báo trong ứng dụng của mình?Lập trình xác định xem "bật quyền truy cập cho thiết bị trợ giúp" được chọn trong ứng dụng Cocoa

+0

Một khi bạn có thể phát hiện rằng các thiết lập đã được bật, làm thế nào để bạn bắt đầu sử dụng thuật trợ giúp truy cập? Yêu cầu khởi động lại ứng dụng phải không? – cksubs

+0

Khi được hỏi câu hỏi ở đây, có vẻ như bạn cần khởi động lại: http://stackoverflow.com/questions/9132845/how-do-i-give-my-app-assistive-access-privileges-once-enable-access- for-assis – cksubs

Trả lời

4

Tôi nghĩ bạn đang tìm kiếm AXAPIEnabled().

extern Boolean AXAPIEnabled(); 

Trích dẫn the docs:

Returns liệu API khả năng tiếp cận được kích hoạt.

Trả về TRUE nếu API trợ năng hiện được bật, nếu không FALSE.

Ứng dụng trợ giúp sẽ không hoạt động nếu API trợ năng không được kích hoạt hoặc nếu quá trình gọi không phải là khả năng truy cập đáng tin cậy khách hàng. Người dùng có thể bật API trợ năng bằng cách chọn "Bật quyền truy cập cho thiết bị trợ giúp" trong Tùy chọn truy cập toàn cầu.

+0

Bạn cũng nên đọc thảo luận [AXIsProcessTrusted/AXMakeProcessTrusted] (http://www.cocoabuilder.com/archive/cocoa/135734-axisprocesstrusted-axmakeprocesstrusted.html). Bạn sẽ biết rằng bạn cũng nên kiểm tra 'AXIsProcessTrusted()'. – 0xced

+1

'AXAPIEnabled()' đã không được chấp nhận trong OS X 10.9 Mavericks – pkamb

+1

Có, đối với chức năng này trong 10.9, hãy xem [câu hỏi này] (http://stackoverflow.com/questions/17693408/enable-access-for-assistive-devices -programmatically-on-10-9) và câu trả lời được đánh giá cao nhất của nó. – zpasternack

11

Trong OS X 10.9 Mavericks, AXAPIEnabled()has been deprecated.

AXIsProcessTrustedWithOptions thể được sử dụng thay vì:

NSDictionary *options = @{(id)kAXTrustedCheckOptionPrompt: @YES}; 
BOOL accessibilityEnabled = AXIsProcessTrustedWithOptions((CFDictionaryRef)options); 

Nếu bạn vượt qua trong YES cho kAXTrustedCheckOptionPrompt, hệ thống sẽ hiển thị cho người dùng một hộp thoại nhỏ hữu ích với một liên kết đến System Preferences:

"yourapp .app muốn kiểm soát máy tính này bằng các tính năng trợ năng. "

enter image description here

Các vấn đề liên quan