Help us understand the problem. What is going on with this article?

Volleyを使って「端末内ストレージにあるファイル」を非同期で読み込もうとしてみる

More than 5 years have passed since last update.

※この記事は、Volleyとは何か?という概略を知っている人を対象に書いています。

Volleyを使ってサーバ上の情報を読み込むときは、以下のような処理を記述します。

// 1. 通信を非同期で行うためのオブジェクトを生成。
RequestQueue requestQueue = Volley.newRequestQueue(context);
// 2. 「どのような通信処理を行うか」を規定したオブジェクトを生成。
StringRequest request = new StringRequest(URL,
[Listener], <- 通信処理が成功した場合のリスナー
[ErrorListener]); <- 通信処理が失敗した場合のリスナー
// 3. 2.で規定した通信内容を実行するよう登録。
requestQueue.add(request);

上記疑似コードの2. の「URL」のところを「file://・・・」みたいな一般のURIでも動くのかなぁ?と思い、試してみました。
結果は、「失敗」!
Volley内部で非同期で処理を行っているところで「HttpURLConnection」にキャストしているらしく、そこでこけちゃってました。

まぁ、ある意味わかりきった結果だと思いますが、もしこれがうまくいったら「サーバ上のファイル読み込み用」「端末内ストレージ内のファイル読み込み用」とで意識せず「ファイル読み込み処理」がさくっとかけたんだろうな・・・と思いました。。。

上記の内容を対応したライブラリがほしければVolleyを少し改造するしかなさそうです。。。

LyricalMaestro0
よろしくお願いいたします。 ・GooglePlayにアプリをリリースしています。 https://play.google.com/store/apps/developer?id=Maestro_L_jp&hl=ja
http://lyricalmaestrojp.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away