Zinc #14 ダウンロード機能の実装

ダウンロード機能を実装してみる・・・。

まずmenu_main.xmlに、

メニューアイテム"ダウンロード"を追加・・・。
(今回はstrings.xmlに追加し忘れた・・・。)

MainActivity.javaのonOptionsItemSelectedで、

webViewからstrUrlを取得、Uri.parseでパースしてdownloadUriに・・・。
downloadUri.getLastPathSegmentでdownloadFilenameも取り出す・・・。
リクエスト作成では、保存先はrequest.setDestinationInExternalFilesDirでEnvironment.DIRECTORY_DOWNLOADSを指定・・・。
アプリフォルダの下の/files/Download/に、downloadFilenameのファイル名で保存される・・・。
DownloadReceiverはBroadcastReceiverの派生クラスで、downloadReceiverをregisterReceiverで登録することで、

ここでいろいろイベント処理できる・・・。
CustomWebViewClientと同様にactivityをもらって、downloadManagerから成功か失敗かのステータスを取得している・・・。

downloadManagerは、

こうやって取得・・・。

registerReceiverしたら、

downloadManager.enqueueでrequestを追加すると、ダウンロードキューに追加されてダウンロードが始まるのである・・・。

ダウンロードは、ファイルを書き込むので、

android.permission.WRITE_EXTERNAL_STORAGEを追加・・・。

f:id:BG1:20160715112140p:plain

これでEnter押しても、

f:id:BG1:20160715112217p:plain

この端末だとロードされない・・・。

f:id:BG1:20160715112258p:plain

ダウンロードを押すと、ダウンロードが始まる・・・。

f:id:BG1:20160715112314p:plain

通知領域を上からスワイプで降ろすと、ダウンロードされてるのがわかる・・・。

f:id:BG1:20160715112430p:plain

戻って、ダウンロードが終わると、"STATUS_SUCCESSFUL"が出る・・・。

f:id:BG1:20160715112652p:plain

ダウンロードできた・・・。

https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc