1

ダウンロードしたイメージをSDカード内に保存するための新しいディレクトリを作成するアプリケーションが必要でした。いくつかの方法を試しましたが、まだうまくいかないようです。Androidマニフェストにも外部ストレージの許可を含めました。コメントをお待ちしております。

        Bitmap bm = null;
        InputStream in;
            in = new java.net.URL("http://blogs.computerworld.com/sites/computerworld.com/files/u177/google-nexus-4.jpg").openStream();
            bm = BitmapFactory.decodeStream(new PatchInputStream(in));
            File file = new File(Environment.getExternalStorageDirectory() + "/map");
            file.mkdirs();
            File outputFile = new File(file, "Image"+NumIncrease);
            FileOutputStream fos = new FileOutputStream(outputFile);

以下は、これを実行して得たものです。

12-05 15:55:25.566: D/skia(4244): ---- read threw an exception
12-05 15:55:25.585: D/skia(4244): ---- read threw an exception
12-05 15:55:25.585: W/System.err(4244): java.io.IOException: Is a directory
12-05 15:55:25.585: W/System.err(4244):     at org.apache.harmony.luni.platform.OSFileSystem.read(Native Method)
12-05 15:55:25.585: W/System.err(4244):     at dalvik.system.BlockGuard$WrappedFileSystem.read(BlockGuard.java:165)
12-05 15:55:25.585: W/System.err(4244):     at java.io.FileInputStream.read(FileInputStream.java:290)
12-05 15:55:25.585: W/System.err(4244):     at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:166)
12-05 15:55:25.863: E/MediaStore(4244): Failed to create thumbnail, removing original

編集 以下は、ビットマップの処理方法です。

bm.compress(Bitmap.CompressFormat.JPEG, 85, fos);
4

1 に答える 1

0

次のポイントはあなたを助けるかもしれません

  • MediaCardサブディレクトリがないため、おそらく例外がスローされます。パス内のすべてのdirが存在するかどうかを確認する必要があります。
  • これを機能させるために、マニフェストに権限を追加します。
  • メーカーがSDカードを別のパスにマウントすることを決定する可能性があるため、「/sdcard/」を定数として使用しないでください。常にEnvironment.getExternalStorageDirectory();を使用してください。代わりは。

参考文献

于 2012-12-20T06:28:41.167 に答える