如何将图像从其URL传送到SD卡?

如何将图像保存到从图像URL检索的SD卡上?

Solutions Collecting From Web of "如何将图像从其URL传送到SD卡?"

首先,您必须确保您的应用程序有权写入到SD卡。 为此,您需要在应用程序清单文件中添加使用权限写入外部存储 。 请参阅设置Android权限

然后你可以将URL下载到SD卡上的文件中。 一个简单的方法是:

URL url = new URL ("file://some/path/anImage.png"); InputStream input = url.openStream(); try { //The sdcard directory eg '/sdcard' can be used directly, or //more safely abstracted with getExternalStorageDirectory() File storagePath = Environment.getExternalStorageDirectory(); OutputStream output = new FileOutputStream (new File(storagePath,"myImage.png")); try { byte[] buffer = new byte[aReasonableSize]; int bytesRead = 0; while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) { output.write(buffer, 0, bytesRead); } } finally { output.close(); } } finally { input.close(); } 

编辑:放入清单权限

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

在Android开发者的博客上的最新post中可以find一个很好的例子:

 static Bitmap downloadBitmap(String url) { final AndroidHttpClient client = AndroidHttpClient.newInstance("Android"); final HttpGet getRequest = new HttpGet(url); try { HttpResponse response = client.execute(getRequest); final int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url); return null; } final HttpEntity entity = response.getEntity(); if (entity != null) { InputStream inputStream = null; try { inputStream = entity.getContent(); final Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } finally { if (inputStream != null) { inputStream.close(); } entity.consumeContent(); } } } catch (Exception e) { // Could provide a more explicit error message for IOException or // IllegalStateException getRequest.abort(); Log.w("ImageDownloader", "Error while retrieving bitmap from " + url, e.toString()); } finally { if (client != null) { client.close(); } } return null; }