Этот класс является помощником по загрузке в формате PDF, но вы должны реализовать свою библиотеку Gradle Ion для использования этого класса.
введите описание ссылки здесь
Кроме того, создайте каталог с файлами на ваших устройствах. Потому что это не лучший способ сохранить PDF-файл в общих настройках.
введите описание ссылки здесь
public class DownloadHelper {
public static final String TAG = DownloadHelper.class.getSimpleName();
SettingsHelper settingsHelper;
Context context;
ProgressUpdateListener progressUpdateListener;
private static DownloadHelper instance;
private HashMap<String, Integer> percents;
public static DownloadHelper getInstance(Context context) {
if (instance == null) {
instance = new DownloadHelper(context);
}
return instance;
}
public DownloadHelper(Context context) {
this.context = context;
percents = new HashMap<>();
settingsHelper=new SettingsHelper(context);
}
public int getDownloadPercentage(String id) {
if (percents != null && percents.containsKey(id)) {
return percents.get(id);
}
return 0;
}
public void setProgressUpdateListener(ProgressUpdateListener progressUpdateListener){
this.progressUpdateListener = progressUpdateListener;
}
public void downloadPdf(final String fileUrl, final String id) {
//String filePath = Util.getExternalFilesDir(context);
//String filePath = (Environment.getDataDirectory().getAbsolutePath());
Ion.getDefault(context).configure().setLogging("ion-sample", Log.DEBUG);
String filePath = Environment.getExternalStorageDirectory().toString()+"/DownloadPdf";
File directory = new File(Environment.getExternalStorageDirectory().toString()+"/DownloadPdf");
directory.mkdir();
String filename = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
filePath += "/" + filename;
String newfileUrl = fileUrl.replace(fileUrl,"http://www.stackoverflow.com/"+fileUrl);
int downloaded = 0;
final int start = downloaded;
try {
final OutputStream output = new FileOutputStream(filePath);
Ion.with(context)
.load(newfileUrl)
.progressHandler(new ProgressCallback() {
@Override
public void onProgress(final long downloaded, final long total) {
int progress = (int) (((downloaded + start) * 100) / (start + total));
if (progressUpdateListener != null){
progressUpdateListener.updateProgress(id, progress);
}
settingsHelper.setProgress(progress);
}
})
.write(output, false)
.setCallback(new FutureCallback<OutputStream>() {
@Override
public void onCompleted(Exception e, OutputStream result) {
if (e != null) {
ErrorHandler.handleError(TAG, e);
}
try {
output.flush();
output.close();
}
catch (IOException ioE) {
ErrorHandler.handleError("egazetedown",ioE);
}
Log.d("egazetedown",id+"-result--"+result.toString());
if(id!=null&& progressUpdateListener!=null) {
progressUpdateListener.updateStatus(id, true);
settingsHelper.setSavedItemListStatus(id, true);
}
}
});
}
catch (Exception e) {
ErrorHandler.handleError(TAG, e);
}
}
public void stop() {
instance = null;
}
public boolean deleteFile(String filePath) {
boolean result = false;
if(filePath!=null) {
File file = new File(filePath);
if(file!=null)
if (file.exists()) {
result = file.delete();
}
}
return result;
}
}