Tôi đang cố gắng kết nối hai thiết bị Android chưa được ghép nối qua Bluetooth cho mục đích kết nối mạng P2P. Không cần bảo vệ MitM. Android có createInsecureRfcommSocketToServiceRecord
và listenUsingInsecureRfcommWithServiceRecord
cho điều này (vì API cấp 10), hoạt động hoàn hảo trên các thiết bị hiện đại. Tuy nhiên, trên Galaxy Ace (Android 2.3.3 = API cấp 10, kết nối với Galaxy Nexus), nó tạo ra một hộp thoại ghép nối. Điều này xảy ra cả trên các kết nối vào và ra. (Cập nhật: Cập nhật Galaxy Ace lên Android 2.3.6 dường như khắc phục sự cố. Có phiên bản Android cụ thể nào không bao giờ thực hiện điều này không?)Khi nào android hiển thị hộp thoại ghép nối khi sử dụng ổ cắm Bluetooth RFCOMM không an toàn?
Sau khi ghép nối được chấp nhận, kết nối hoạt động. Vì lý do này, tôi nghĩ rằng điều này không liên quan đến Issue 40101: createInsecureRfcommSocketToServiceRecord causes pairing dialog on Android 4.2 chỉ nên xảy ra nếu bản ghi dịch vụ không tồn tại.
Tôi cho rằng hộp thoại này không thể tránh được trên các thiết bị xuất hiện (nếu có thể, giải thích cách thực hiện điều này là câu trả lời hợp lệ). Vì lý do này, Tôi muốn biết khi nào một hộp thoại được đưa lên. Tôi không tìm thấy bất cứ điều gì trong nguồn Java Android (nó đi bản địa khá nhanh chóng). Tôi nghi ngờ nó có bất cứ điều gì để làm với phiên bản Bluetooth, kể từ khi Ace có Bluetooth 2.1 được cho là hỗ trợ các kết nối "chỉ hoạt động" cần thiết.
Nếu có bất kỳ thứ gì cho phép tôi phát hiện xem thiết bị có hỗ trợ kết nối mà không cần bật hộp thoại hay không hoặc nó đã được cố định rõ ràng với một phiên bản Android nhất định, điều đó sẽ giúp tôi rất nhiều.
Ngoài ra, tôi đang tìm cách dễ dàng exclude such devices.
Đối với kết nối không an toàn tức là, nếu bạn sử dụng createInsecureRfcommSocketToServiceRecord và listenUsingInsecureRfcommWithServiceRecord, bạn đã sử dụng UUID nào? – krisDrOid
@ krisDrOid: Một tùy chỉnh được tạo ngẫu nhiên. –