I am trying to download PDF file and save it to the device memory.
public void downloadPdfAttachment(Activity activity, Attachment attachment) {
Dexter.withActivity(activity)
.withPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(new MultiplePermissionsListener() {
@Override public void onPermissionsChecked(MultiplePermissionsReport report) {
if (report.areAllPermissionsGranted() && attachment != null) {
startPdfAttachmentDownload(activity, attachment);
} else {
view.displayStoragePermissionRequired();
}
}
@Override public void onPermissionRationaleShouldBeShown(
List<PermissionRequest> permissions, PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
}
And I get all two permission here as granted. Then I try to download attachment and save it.
public static String savePdfToDisk(Context context, ResponseBody body, String pdfName) {
try {
File fileDirectory = new File(getPdfFolder(context));
fileDirectory.mkdir();
File file = new File(fileDirectory, pdfName);
file.createNewFile();
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(file);
while (true) {
int read = inputStream.read(fileReader);
if (read == -1) {
break;
}
outputStream.write(fileReader, 0, read);
fileSizeDownloaded += read;
Log.d("PdfUtils", "file download: " + fileSizeDownloaded + " of " + fileSize);
}
outputStream.flush();
return file.getAbsolutePath();
} catch (IOException e) {
Log.d("PdfUtils", e.getMessage());
return null;
} finally {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
}
} catch (IOException e) {
Log.d("PdfUtils", e.getMessage());
return null;
}
}
public static String getPdfFolder(Context context) {
return context.getFilesDir()+ "/my_app_name/pdf_files";
}
And at this line I get exception that Permision is denied.
file.createNewFile();
I double check in the app settings and Storage permission is granted.
Here is my Manifest file:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Any idea?