Я сохраняю pdf-файл, который я получаю с сервера с помощью метода:
private boolean writeResponseBodyToDisk(ResponseBody body) {
try {
File futureStudioIconFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "order.pdf");
InputStream inputStream = null;
OutputStream outputStream = null;
try {
byte[] fileReader = new byte[4096];
long fileSize = body.contentLength();
long fileSizeDownloaded = 0;
inputStream = body.byteStream();
outputStream = new FileOutputStream(futureStudioIconFile);
while (true) {
int read = inputStream.read(fileReader);
if (read == -1) {
break;
}
outputStream.write(fileReader, 0, read);
fileSizeDownloaded += read;
Log.d(TAG, "file download: " + fileSizeDownloaded + " of " + fileSize);
}
outputStream.flush();
return true;
} catch (IOException e) {
return false;
} finally {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
} catch (IOException e) {
return false;
}
}
Мне удалось сохранить его на устройстве, хотя, насколько я понял, я не могу открыть его сразу после загрузка, потому что это загрузка от элемента, щелкает в адаптере. Во всяком случае, я сделал так, чтобы после загрузки она меняла страницу на другую активность, где я мог бы открыть ее, хотя она все равно не работает. Код, который я использую в упражнении:
String path = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) + "/order.pdf";
File file=new File(path);
if(file.canRead())
{
pdfView.fromFile(file).defaultPage(1).onLoad(new OnLoadCompleteListener() {
@Override
public void loadComplete(int nbPages) {
Toast.makeText(PdfActivity.this, String.valueOf(nbPages), Toast.LENGTH_LONG).show();
}
}).load();
}
Поскольку код должен быть правильным, я пробовал много вариантов получения пути к PDF, но ни один из них не работал. Проблема в пути или это совсем другая проблема?
Редактировать: он не может прочитать файл в if(file.canRead())