我的目标是创建一个应用程序,允许我从一系列网址下载多个图像,并允许用户滑过它们。
我有点不确定如何做到这一点,因为我不知道如何将图像保存在点燃(它没有SD卡)。
有关如何从本地保存图像(以便尽快访问)的任何帮助都会很棒!
答案 0 :(得分:0)
您可以在与数组循环中使用此方法。不要担心外部目录。没有SD卡插槽的设备与内部存储器分开放置,就像“外部存储器”一样。
public Bitmap downloadImage(String url)
{
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet getRequest = new HttpGet(url);
try
{
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK)
{
return null;
}
final HttpEntity entity = response.getEntity();
if (entity != null)
{
InputStream inputStream = null;
try
{
inputStream = entity.getContent();
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
saveImageToExternalMemory(bitmap, url); //edit the name if need
return bitmap;
}
finally
{
if (inputStream != null)
{
inputStream.close();
}
entity.consumeContent();
}
}
}
catch(IOException e)
{
getRequest.abort();
}
catch (Exception e)
{
getRequest.abort();
}
finally
{
if (client != null)
{
client.getConnectionManager().shutdown();
}
}
return null;
}
这将使用网址名称保存图片,您可以根据需要进行编辑。并保存外部存储器的图像(如果设备有SD卡,则无关紧要)。例如,我有一个Nexus 7,它可以工作。
public void saveImageToExternalMemory(Bitmap bitmap, String name) throws IOException
{
File dir = new File(Environment.getExternalStorageDirectory().toString()+"/yourdirectoryname");
if (!dir.exists())
dir.mkdirs();
File file = new File(dir, name+ ".jpg"); //or the type you need
file.createNewFile();
OutputStream outStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
}
此方法需要
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
清单中的,下载需要:
<uses-permission android:name="android.permission.INTERNET"/>