読者です 読者をやめる 読者になる 読者になる

なにも わからぬ

パソコンとプログラミング関係をメモっていきたい

AndroidのWebViewをちょっとだけ自動操縦

個人的にAndroidアプリでやりたいことと言えばネットワークサービスへのアクセスが多いのだけど、銀行系やクレカなどのネットサービスへのアクセスとなると、HTTPライブラリでゴリゴリやったりするには環境変数やクッキーを完全にうまくやらないと不正アクセスを疑われかねず怖い。例えば毎月クレカの明細からxlsxファイルを作って管理しているが、ネットワークアクセスまで自動化するのは怖いため、手動でログインし明細テーブルを選択してコピー→クリップボード内のデータを編集するPythonスクリプト実行→xlsxファイルにペーストというちょっとイケてない手順を踏んでいる。こういう定型処理を手動でやり続けるのは恥だし役にも立たないため、とりあえずネットワークアクセスからどうにかしていこう。

ログインフォームを埋めてボタンやアンカーをたどる程度ならば、実際にブラウザを利用するのが確実。フォームを埋めるのもアンカーをたどるのも全てJavaScriptを流し込むだけでできるため、WebView.loadUrl()で該当URLを読み込ませ、WebViewClientを継承したクラス内でonPageFinishedメソッド(ページ読み込み完了時に呼ばれるメソッド)をoverrideし、引数として与えられる現在のURLで処理を振り分けjavascriptを流し込めば良いようだ。

以下はMyはてなにアクセスし、ログインURLへ飛ばされたらユーザー名とパスワードを入力してsubmitボタンを押すデモ(ユーザー名とパスワードはもちろんダミー)。しかし今は素のJavaScriptにdocument.querySelector()なんて便利なもんがあるんだなあ……!

実行すると自動的にログイン処理を行い以下のようにログイン状態でmyはてなに。 f:id:htkb:20161231230805j:plain

こんな感じで2017年はちびちび細かくやったことを記事にしていきたい。