P2Pネットワーキングの目的で、2つのペアのアンドロイドデバイスをBluetooth経由で接続しようとしています。 MitM保護は必要ありません。 Androidはこれに対応するcreateInsecureRfcommSocketToServiceRecord
とlistenUsingInsecureRfcommWithServiceRecord
(APIレベル10以降)を備えています。これは現代のデバイスでは完全に機能します。しかし、Galaxy Ace(Android 2.3.3 = APIレベル10、Galaxy Nexusと接続)では、ペアリングダイアログが作成されます。これは、着信接続と発信接続の両方で発生します。 (アップデート:Android 2.3.6にGalaxy Aceをアップデートすると、明らかに問題が解決されます)。安全でないRFCOMMブルートゥースソケットを使用している場合、アンドロイドはいつペアリングダイアログを表示しますか?
ペアリングが受け入れられたら、接続が有効になります。このため、これはサービスレコードが存在しない場合にのみ発生する、Issue 40101: createInsecureRfcommSocketToServiceRecord causes pairing dialog on Android 4.2には関係しないと私は考えます。
このダイアログは、表示されるデバイスでは回避できないと考えています(可能な場合は、これを行う方法を説明するのが有効です)。このような理由から、このようなダイアログがいつ表示されるかを知りたいと思います。 AndroidのJavaソースで何も見つかりませんでした。 Aceは必要な "just works"接続をサポートするはずのBluetooth 2.1を持っているので、Bluetoothバージョンとは関係がないとは思う。
デバイスが接続をサポートしていないかどうか、または特定のアンドロイドバージョンに明確に修正されているかどうかを検出できるものがあれば、それは非常に助けになります。
また、私は簡単にexclude such devicesへの道を探しています。
つまり、createInsecureRfcommSocketToServiceRecordとlistenUsingInsecureRfcommWithServiceRecordを使用する場合、どのUUIDを使用しましたか? – krisDrOid
@krisDrOid:ランダムに生成されたカスタムのもの。 –