使用此代码我可以从Android下载URL并将其保存到SDCard中,有什么方法可以以编程方式打开此文件吗?如何以编程方式在Android中打开下载的文件?
Can Intent help in this?
private static class Task extends AsyncTask<Void, Void, Void> {
static String DownloadUrl = "http://00.00.00.00/abc.crt";
static String fileName = "def.crt";
异步任务下载
@Override
protected Void doInBackground(Void... arg0) {
DownloadFromUrl();
return null;
}
public static void DownloadFromUrl() {
try {
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/SDCard");
if(dir.exists()==false) {
dir.mkdirs();
}
URL url = new URL(DownloadUrl); //you can write here any link
File file = new File(dir, fileName);
long startTime = System.currentTimeMillis();
Log.d("DownloadManager", "download begining");
Log.d("DownloadManager", "download url:" + url);
Log.d("DownloadManager", "downloaded file name:" + fileName);
/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
/* Convert the Bytes read to a String. */
FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.flush();
fos.close();
Log.d("DownloadManager", "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + " sec");
} catch (IOException e) {
Log.d("DownloadManager", "Error: " + e);
}
}
}
你想如何打开它?作为文本或二进制或与应用程序? – Gjordis 2013-02-21 09:04:50
是的,'intent'是要走的路。看到Google或[this](http://stackoverflow.com/questions/7009452/how-to-launch-browser-to-open-local-file)。 – adrianp 2013-02-21 09:04:52
当你说'开放'时,你是什么意思?什么是文件类型(如.crt)?数据是什么?串?音频? – 2013-02-21 09:05:06