1

私のアプリには、URL から画像を表示する ImageView があります。

この方法を使用して画像をダウンロードします。

        Bitmap bitmap=null;
        URL imageUrl = new URL(url);
        HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
        conn.setConnectTimeout(30000);
        conn.setReadTimeout(30000);
        conn.setInstanceFollowRedirects(true);
        InputStream is=conn.getInputStream();
        OutputStream os = new FileOutputStream(f);
        Utils.CopyStream(is, os);
        os.close();
        bitmap = decodeFile(f);
        return bitmap;

これは、数字または英字を含む URL でのみ機能し、他の文字 (スペースなど) では機能しません。

適切な URL: http://site.com/images/image.png

悪い URL: http://site.com/images/image 1.png

URLエンコーディング(URLEncoder.encode)を変更しようとしましたが、URL全体が変更されます(スラッシュなどを含む...)。

エンコーディング後にいくつかの文字を置き換える必要がありますか? それとももっと良い方法がありますか?

ありがとう :)

4

1 に答える 1

4

Android の URL エンコーディング

URL全体をエンコードするのではなく、「信頼できないソース」からの部分のみをエンコードします。-ヤンチェンコ

String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "https://stackoverflow.com/search?q=" + query;

URL の特定の部分だけを扱っていて、URL を構築または再構築する方法を知っている場合は、これで問題ありません。任意の URL 文字列を処理できるより一般的なアプローチについては、以下の私の回答を参照してください。–クレイグB

String urlStr = "http://abc.dev.domain.com/0007AC/ads/800x480 15sec h.264.mp4";
URL url = new URL(urlStr);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
于 2012-11-10T17:17:08.950 に答える