1

私は Android 開発に不慣れで、次の問題の解決策について助けが必要です: 私の大学の Wi-Fi ネットワークには、学校のシステムにアクセスするためにユーザー名とパスワードを要求するキャプティブ ポータルがあるため、自動化できると思いました。電話が学校のネットワークへの接続を検出する (SSID を確認する) たびに、ユーザー データを含む HTTP ポスト リクエストをポータルに送信することで、ネットワークにログインするプロセスです。問題は、どこから始めればよいかわからないということです。Android は非常に広範な環境であるため、ここでガイダンスをお願いします。私はそれについていくつかの宿題をしました、そしてこれは私がこれまでに得たものです:

  • Connectivity Manager Intent で BroadcastReceiver を使用してアプリを起動できます。Wifi が必要なだけなので、不要なインテントが多すぎる可能性があると思います。私はそれについてここで読みました
  • AndroidHTTPClient を使用して HTTP リクエストを作成できます。

私が計画しているフローは次のとおりです: ユーザーが初めてアプリケーションを開き、ユーザー名とパスワードを入力すると、自動接続のトグル ボタンがあり、それを押すと [切断] に変わります (同じ資格情報で一度に 1 つのデバイスに接続すると、ネットワークのログアウト ページに要求が送信されます)。システムが自動接続モードの場合、電話が学校のネットワークに接続するたびに、アプリが実行されていなくても要求を送信する必要があります。

  • まず、この種の問題に対する最善のアプローチは何ですか??
  • 認証情報をどこに (いつ) 保存する必要がありますか?
  • リクエストはどこにすればよいですか?レシーバーの onRecive()? 活動中?

私の問題を解決するようあなたに頼むようなものだとはわかっていますが、私はここで学ぼうとしており、このソフトウェアで最善を尽くすためのガイダンスが必要です. 私はあなたの意見にとても感謝しています:)

4

1 に答える 1

2

BroadcastReceiver を実装する Service を実装して、AsyncTask を構成し、それを実行してログイン サービスに適切な要求を行うインターネット接続の変更をチェックします。

これが実際に可能かどうかを確認しましたか?HTTP 要求の正しいパラメーターについて学習しましたか? curl を使用して認証できますか?

Android に貴重な情報を保存する適切なメカニズムがあるかどうかはわかりませんが、基本的に、資格情報をどこに保管するかは、セキュリティ リスクのレベルによって異なります。これらのパスワードは価値がなく、アプリケーションが広く普及しないと仮定すると、今のところ、これにはあまり注意を払いません。とにかく、バイナリシーケンスを静的変数に保存し、それをユーザーのパスワードと XOR して、別の静的変数に保存することができます。単純なメモリ スキャンにはこれで十分です。ファイルへの書き込みについては言及していません。セキュリティの観点から、その方法はリスクが高すぎると思うからです。

ところで、これは良いアプリケーションのアイデアのように見えます。誰かがすでにこれを作っていないか確認しましたか?

于 2012-04-22T22:02:33.503 に答える