Загрузить файл из веб-просмотра в пользовательскую папку
Можно ли загрузить файл в пользовательский каталог из веб-браузера Android. В настоящее время файл загружается в SDCard/downloads. Можно ли переопределить местоположение загрузки по умолчанию?
В настоящее время я использую следующий код для загрузки файла
Intent intent = new Intent(Intent.ACTION_VIEW Uri.parse("download file location"));
startActivity(intent);
1 ответ
Когда вы имеете в виду, что вам нужен браузер... вы имеете в виду, что вам нужно обрабатывать загрузку с помощью браузера? Потому что вы можете использовать веб-просмотр и по-прежнему обрабатывать загрузку самостоятельно.
Как прокомментировал @Harry Joy, я бы использовал shouldOverrideUrlLoading(WebView view, String url)
метод и отфильтруйте те URL / расширения, которые вы хотите загрузить отдельно. Если у вас нет конкретных расширений или URL-адресов, которые вы, возможно, захотите загрузить, но вы можете отредактировать html/javascript-код, возможно, вы можете сделать какой-нибудь трюк javascript, чтобы добавить флаг и заставить ваш WebView распознавать URL-адрес как загрузку.
Чтобы справиться с загрузкой, может быть, вы уже знаете, но это было бы что-то вроде этого
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));
}