是否可以从android webview将文件下载到用户定义的目录。 目前,该文件正在SDCard / downloads中下载。是否可以覆盖默认下载位置?
我目前正在使用以下代码下载文件
Intent intent = new Intent(Intent.ACTION_VIEW Uri.parse("download file location"));
startActivity(intent);
答案 0 :(得分:1)
当您的意思是需要浏览器时......您是否需要使用浏览器处理下载?因为您可以使用webview并仍然自己处理下载。
正如@Harry Joy所评论的那样,我会使用shouldOverrideUrlLoading(WebView view, String url)
方法并过滤您想要单独下载的网址/扩展程序。如果你没有任何特定的文件扩展名或网址,你可能想要下载,但你可以编辑你的html / javascript代码,也许你可以做一些javascript技巧来添加一个标志,让你的WebView将URL识别为下载。 / p>
要处理下载,也许你已经知道了,但它会是这样的
if (sUserAgent == null) {
Log.e(TAG + " - Conexion", getString(R.string.e_envio_datos));
}
// Create client and set our specific user-agent string
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
request.setHeader("User-Agent", sUserAgent);
try {
HttpResponse response = client.execute(request);
// Check if server response is valid
StatusLine status = response.getStatusLine();
if (status.getStatusCode() != HTTP_STATUS_OK) {
// Error
} else {
InputStream in = response.getEntity().getContent();
byte[] read = new byte [1024];
int numReadBytes= 0, singleByte;
boolean endFlow= false;
do {
singleByte= in.read();
endFlow = singleByte == -1;
if (!endFlow) {
read[numReadBytes] = (byte) singleByte;
numReadBytes++;
}
} while (!endFlow);
if (numReadBytes> 0) {
// Here you implement some code to store the array of bytes as a file
storeDataWherever(read);
}
}
} catch (IOException e) {
Log.e(TAG + " - Conexion", e.getMessage());
} catch (ArrayIndexOutOfBoundsException e){
Log.e(TAG + " - Conexion", getString(R.string.e_respuesta_size));
}