如何在android手机上安装.png文件(外部)
我在尝试将.png图像添加到android手机时遇到问题。 我现在已经做到了这一点:如何在android手机上安装.png文件(外部),android,image,http,Android,Image,Http,我在尝试将.png图像添加到android手机时遇到问题。 我现在已经做到了这一点: URL url = new URL ("http://oranjelan.nl/oranjelan-bg.png"); InputStream input = url.openStream(); try { String storagePath = Environment.getExternalStorageDirectory(); OutputStream output = ne
URL url = new URL ("http://oranjelan.nl/oranjelan-bg.png");
InputStream input = url.openStream();
try {
String storagePath = Environment.getExternalStorageDirectory();
OutputStream output = new FileOutputStream (storagePath + "/oranjelangbg.png");
try {
byte[] buffer = new byte[1000000];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} finally {
input.close();
}
但是我得到以下错误@String storagePath=Environment.getExternalStorageDirectory();编译器说无法将文件转换为字符串
然后,如果我有点胡闹,尝试一下这段代码:
URL url;
void setup() {
try {
URL url = new URL ("http://oranjelan.nl/oranjelan-bg.png");
InputStream input = url.openStream();{
try {
String storagePath = Environment.getExternalStorageDirectory().getName();
OutputStream output = new FileOutputStream (storagePath + "/oranjelangbg.png");
try {
byte[] buffer = new byte[1000000];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
} finally {
try {
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}
} catch (MalformedURLException ex) {
throw new RuntimeException(ex);
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
}
当我启动应用程序时,我的安卓系统就会冻结
有人有什么想法吗?请查看文档以了解 它返回一个文件(java.io.File),而不是字符串 我使用了一些大致如下的东西:
File storagePath = Environment.getExternalStorageDirectory();
File outFile = new File(storagePath, filename + FILE_EXTENSION);
OutputStream outStream = new FileOutputStream(outFile);
查看文档以了解更多信息 它返回一个文件(java.io.File),而不是字符串 我使用了一些大致如下的东西:
File storagePath = Environment.getExternalStorageDirectory();
File outFile = new File(storagePath, filename + FILE_EXTENSION);
OutputStream outStream = new FileOutputStream(outFile);
试试这样的
File storagePath = new File(Environment.getExternalStorageDirectory()+ "/oranjelangb.png");
OutputStream output = new FileOutputStream (storagePath.getAbsoluteFile());
试试这样的
File storagePath = new File(Environment.getExternalStorageDirectory()+ "/oranjelangb.png");
OutputStream output = new FileOutputStream (storagePath.getAbsoluteFile());
除了Tanis.7x所指出的之外,您还需要将网络操作移出UI线程,转移到AyncTask之类的任务中。否则,在应用程序完成下载之前,您将无法与应用程序交互-这可能会导致应用程序无响应消息和强制关闭。在最近的android版本中,在主线程上进行联网是一个自动的例外,即使它不会导致延迟。除了Tanis.7x所指出的之外,您还需要将网络操作移出UI线程,转移到AyncTask之类的任务中。否则,在应用程序完成下载之前,您将无法与应用程序交互-这可能会导致应用程序无响应消息和强制关闭。在较新的android版本中,在主线程上进行联网是一个自动例外,即使不会导致延迟。哇,很多回复,非常感谢提前回复,我现在必须退出,将在周一回来,然后回复并查看。尝试在不同的线程中下载图像。这将克服冰冻问题。谢谢大家,我想我现在明白了,所有的雨篷都很好!而且帮了我很多忙!哇,很多回复,非常感谢提前,我现在必须退出,将在周一回来,然后回复并查看。尝试用不同的线程下载图像。这将克服冰冻问题。谢谢大家,我想我现在明白了,所有的雨篷都很好!而且帮了我很多忙@Ankit-不要否决准确的部分答案,除非它们声称是完整的。我可以很容易地对你的答案投反对票,因为它遗漏了大量内容,但我不会投反对票。我添加了一个代码示例进行澄清,但消息的原始内容仍然相关,应该已经令人满意地回答了这个问题。@Ankit-答案不必是代码形式的,指出确切的问题就足够了。@Ankit-事实上,指出精确问题的简明答案很好。@Ankit-不要轻视精确的部分答案,除非它们声称是完整的。我可以很容易地对你的答案投反对票,因为它遗漏了大量内容,但我不会投反对票。我添加了一个代码示例进行澄清,但消息的原始内容仍然相关,应该已经令人满意地回答了这个问题。@Ankit-答案不必是代码形式的,指出确切的问题就足够了。@Ankit-事实上,简洁的答案指出了确切的问题,这是很好的。