我有一個Android應用程序,可以自由地連接到藍牙設備。當我嘗試連接到未與手機配對的設備時,對話框將提示用戶輸入密碼。密鑰是先驗知道的,但由於沒有方法以編程方式輸入(至少在標準的Android API中),所以必須向用戶顯示,然後輸入。用對話框阻止Android線程
我現在有一個線程通過抓住BluetoothSocket
並呼叫.connect()
來啓動連接。如果需要配對,則該呼叫將阻塞,直到用戶在對話框中輸入密鑰。
爲了搶先一步,我添加到我的活動的處理程序的東西來顯示對話框。在發送消息之前,我做了一個虛擬對象傳遞,並在發送消息和嘗試連接之間調用.wait()
,在收到對話框中的OnClick
後,我可以.notify()
,但是我無法引用處理內部AlertDialog
類中的消息,正如this question中的問題一樣。
我可以把它召回給持有線程的類,但它似乎有點笨重,導致我的核心問題:是我的結構從根本上打破了?我應該怎麼做呢?
Another related question建議使用通知系統,但是在這裏用另一個對話框來鏡像密碼對話框看起來好多了。