Как загрузить PDF из хранилища Firebase, сохранить его в общих настройках и просмотреть в приложении? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть URL для загрузки PDF, который я загрузил в хранилище Firebase. Теперь я хочу скачать PDF, используя URL, а затем сохранить его в приложении, используя SharedPreferences. Что-то вроде сохранения в автономном режиме, но внутри приложения, а затем просмотра PDF в самом приложении.

В настоящее время у меня есть ссылка на скачивание PDF с Firebase Storage и PDF Viewer, добавленная в приложение.

Я использовал эту зависимость Implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' и вот мой код:

String URL="https://firebasestorage.googleapis.com/v0/b/client40-64886.appspot.com/o/newUpload?alt=media&token=59cec451-ee34-477a-98c6-8314c37c1804";

File file = new File(URL);

pdfView.fromFile(file).load();`

Проблема в том, что он даже не просматривает PDF.

1 Ответ

0 голосов
/ 22 апреля 2019

Этот класс является помощником по загрузке в формате 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;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...