2014-07-15 24 views
6

tôi muốn viết một AccessibilityService để giúp người dùng điền vào biểu mẫu. Tôi thấy khả năng gọi mã Javascript qua số WebView.loadUrl(). Nhưng kể từ khi tôi chỉ là AccessibilityNodeInfo tôi chỉ thấy rằng WebView là trên màn hình. Sau khi một số nghiên cứu, tôi thấy rằng TalkBackService có thể tiêm Javascript, và trong một bài viết khác (Alternative way for communication between WebView and native) tôi thấy nó có thể nếu tôi có một tham chiếu đến WebView -object.Thực thi Javascript trong Chrome từ AccessibilityService

Có cách nào để thực thi JavaScript qua Message hoặc Mục đích phát sóng trong chromes WebView không?

Sẽ thực sự tuyệt vời nếu ai đó có thể giúp tôi! Cảm ơn rất nhiều!

+0

Hi Lee, tôi đang đối mặt với cùng một vấn đề điền tên người dùng và mật khẩu từ AccessibilitService của tôi. Tôi không thể tìm thấy một cách mà tôi có thể tiêm một javascript bằng cách sử dụng AccessibilityInfo. Bạn có thể vui lòng cho biết làm thế nào bạn quản lý để làm điều đó? Cảm ơn. – androidGuy

+0

Xin chào Lee, Bạn có thể vui lòng cho tôi biết cách tải URL từ webview đó bằng dịch vụ trợ năng không? –

Trả lời

1

Chrome không sử dụng WebView, Chrome sử dụng công cụ hiển thị của riêng nó. Trong khi một số mã kết thúc được chia sẻ với WebView (như trong hai kết thúc lên được biên dịch từ cùng một mã nguồn) đó là nơi mà sự giống nhau kết thúc.

Tôi không nghĩ rằng có một cách để đưa JavaScript vào Chrome thông qua Intent - đó sẽ là một lỗ hổng bảo mật khá lớn (nếu không ai đó có thể đưa JavaScript "gửi tiền của tôi" vào trang ngân hàng của bạn).

Khả năng truy cập không phải là lĩnh vực chuyên môn của tôi nên tôi có thể hoàn toàn ở đây nhưng tôi tin rằng phiên bản Chrome mới hơn hiển thị cấu trúc nội dung web cho lớp trợ năng và do đó bạn có thể thực hiện điều đó mà không cần JavaScript tùy chỉnh. Tôi nghĩ rằng bạn có thể kiểm tra điều này bằng cách sử dụng uiautomatorviewer: cho tôi công cụ hiển thị các hình thức html khi tôi lấy một bãi chứa giao diện người dùng của Chrome. Đó không phải là trường hợp cho bạn?

+0

Xin chào! cảm ơn về câu trả lời. Tôi biết, chrome sử dụng 'ContentViewCore' [1], nhưng lớp này cũng có phương thức' loadUrl() '. :) Tôi biết, đó sẽ là toàn bộ bảo mật, nhưng LastPass [2] đã quản lý nó để chạy javascript trên trang web hiện đang mở. Cảm ơn bạn đã đọc mẹo với uiautomatorviewer, tôi sẽ kiểm tra. Chúc mừng [1] http://src.chromium.org/svn/trunk/src/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java [2] https://helpdesk.lastpass.com/upgrading-to-premium/lastpass-for-android/ – lhlmgr

+0

@ lee.O - thực ra, ContentViewCore.loadUrl xử lý javascript: URL theo cách hơi khác so với webview, nhưng đó là một cuộc thảo luận khác. Tôi sẽ ngạc nhiên nếu lastpass được tiêm javascript, mặc dù. –

+0

@ marcin-koshiba, ouh sry, tôi vừa kiểm tra kho chứa crom. Tôi đã kiểm tra đầu ra của bảng điều khiển javascript chrome trên thiết bị di động và thấy mã họ thực thi. (javascript: function() ...) – lhlmgr

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