2012-04-22 174 views
1

我是Android開發新手,我需要一些幫助才能解決以下問題:我學院的Wi-Fi網絡有一個強制門戶,要求輸入用戶名和密碼才能訪問學校系統,所以我想我可以通過每次手機檢測到與學校網絡的連接(檢查SSID)向用戶數據發送一個HTTP post請求來自動登錄網絡的過程,很容易的蛋糕,對吧?事情是我不知道從哪裏開始,Android是一個非常廣泛的環境,所以我在這裏要求您提供指導。我做了一些關於它的功課,這是我到目前爲止:Android Wifi監聽器策略

  • 我可以使用連接管理器意圖使用BroadcastReceiver啓動應用程序。我認爲這可能會給我太多的意圖,我不需要,因爲我只需要Wifi。我讀過它here
  • 我可以使用AndroidHTTPClient進行HTTP請求。

我計劃的流程如下:用戶首次打開該應用程序時,他輸入用戶名和密碼,還有用於自動連接一個切換按鈕,當你按下改變爲「斷開」它(因爲您一次只能使用相同憑證連接一臺設備,它會向網絡的註銷頁面發送請求)。系統處於自動連接模式時,每次手機連接到學校網絡時,即使應用程序未運行,它也應發送請求。

  • 首先,這種問題最好的辦法是什麼?
  • 我應該在哪裏(以及何時)存儲證書?
  • 我應該在哪裏提出請求?在Receiver的onRecive()中?在活動中?

我知道這就像要求你解決我的問題,但我想在這裏學習,我需要指導,以使我能用這個軟件做到最好。我非常感謝你的輸入:)

+0

https://github.com/bradfitz/android-garage-opener/blob/master/src/com/danga/garagedoor/GarageDoorActivity.java 這是一個無線監聽器的工作示例。 – Pachonk 2012-04-22 21:41:21

回答

2

我會實現一個服務,實現一個BroadcastReceiver來檢查互聯網連接的變化,它配置一個AsyncTask並執行它以向登錄服務發出正確的請求。

您是否確認這是否可能?您是否瞭解HTTP請求的正確參數?你可以使用捲曲進行身份驗證嗎?

我不知道Android是否有一個體面的有價值的信息存儲機制,但實質上你在哪裏保留證書取決於安全風險的水平。我現在不會太在意這一點 - 假設這些密碼沒有價值,應用也不會廣泛傳播。無論如何,你可以將一個二進制序列存儲在一個靜態變量中,並將其與用戶密碼進行XOR並將其存儲在另一個靜態變量中。這對於簡單的內存掃描應該足夠了。我沒有提及寫入文件,因爲我認爲這種方式在安全性方面風險太大。

順便說一下,這看起來像一個很好的應用程序的想法。你有沒有檢查是否有人已經做到了這一點?

+0

謝謝!是的,這是可能的,事實上我已經爲Linux筆記本做了一個bash腳本,它的功能就像一個魅力。 用戶信息並不是那麼大,因爲發佈的請求是使用HTTP而不是HTTPS創建的,我想在一個簡單的SQLiteDatabase中存儲它們。 關於其他應用程序,我知道校園裏的某個人做了一個iOS應用程序,並在github上發佈了代碼,但iOS和Android是不同的野獸。 – fixmycode 2012-04-22 22:24:57

+0

關於服務的事情,我還需要一個活動來要求憑證,不是嗎? – fixmycode 2012-04-22 22:30:14

+0

是的,您需要一個讓用戶輸入憑據的活動。 – 2012-04-23 08:56:59