Оно загружает zip-файл с этим кодом, который никогда не вызывал проблем в предыдущих версиях Android (
Код: Выделить всё
downloadedFileКод: Выделить всё
URL downloadUrl = new URL(downloadUrlS);
URLConnection connection = downloadUrl.openConnection();
connection.connect();
InputStream input = new BufferedInputStream(connection.getInputStream());
FileOutputStream output = new FileOutputStream(downloadedFile);
byte[] data = new byte[32768];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
Код завершается с ошибкой, когда приложение вызывает функцию input.read(), вот стек ошибки:
Код: Выделить всё
java.net.SocketException: Software caused connection abort
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:118)
at java.net.SocketInputStream.read(SocketInputStream.java:173)
at java.net.SocketInputStream.read(SocketInputStream.java:143)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:994)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:958)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable(ConscryptEngineSocket.java:873)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:846)
at com.android.okhttp.okio.Okio$2.read(Okio.java:138)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:213)
at com.android.okhttp.okio.RealBufferedSource.read(RealBufferedSource.java:51)
at com.android.okhttp.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:395)
at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:372)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:277)
at java.io.BufferedInputStream.read(BufferedInputStream.java:338)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
В журнале изменений я не нашел изменений в управлении соединением для Android 16, поэтому я попытался указать больше параметров, чтобы избежать тайм-аутов (в любом случае загрузка занимает 2-3 секунды) или проблем с поведением поддержания активности, но я получил то же исключение.
Код: Выделить всё
connection = (HttpURLConnection) downloadUrl.openConnection();
connection.setInstanceFollowRedirects(true);
connection.setConnectTimeout(15000);
connection.setReadTimeout(30000);
connection.setUseCaches(false);
connection.setRequestProperty("Accept-Encoding", "identity");
connection.setRequestProperty("Connection", "close");
connection.connect();
Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-abort
Мобильная версия