PhoneGap, как скачать и открыть PDF-файл в приложении Android
В последнее время я работаю над созданием приложений для Android в PhoneGap, я довольно новичок в разработке мобильных приложений, и я сначала запустил некоторые приложения, и я застрял, когда пытаюсь загрузить некоторые документы (pdf, doc, jpg) в локальное хранилище и открыть его, после поиска через Google, и я попытался следовать этому решению.
Я следовал точному коду в примере и ниже, как я называю плагины:
window.plugins.downloader.downloadFile(url,'/sdcard/download/', 'test.pdf', true, downloadOkCallbak, downloadErCallbak);
window.plugins.pdfViewer.showPdf('/sdcard/download/test.pdf');
URL-адрес - мой удаленный файл, когда я выполняю его, я получаю сообщение об ошибке: "Ошибка типа: window.plugins не определен". Любая помощь приветствуется.
[обновление] Мой код функции showPdf:
public String showPdf(String fileName) {
File file = new File(fileName);
if (file.exists()) {
try {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//intent.setData(Uri.parse(fileName));
this.ctx.startActivity(intent);
return "";
} catch (android.content.ActivityNotFoundException e) {
System.out.println("PdfViewer: Error loading url "+fileName+":"+ e.toString());
return e.toString();
}
}else{
return "file not found";
}
}
[Обновление 2] Я получил ниже ошибку в веб-консоли: Uncaught ReferrenceError: LocalFileSystem не определен в...
В чем может быть проблема?
4 ответа
У меня была та же проблема, что и у OP, и после многих неудачных подходов я пришел к следующему решению (протестировано с Cordova 3.1.0-3.3.0 и Samsung Galaxy S3 & iOS 7):
Решение
Сначала получите файл, запросив файловую систему, а затем загрузите его с вашего сервера с помощью fileTransfer.download (). После завершения загрузки вызовите FileOpener (откроется всплывающее окно, где можно выбрать такие приложения, как Adobe Reader). Примечание: Обязательно включите функцию FileTransfer через CLI/Terminal: плагин cordova add org.apache.cordova.file
- Перейдите в папку вашего проекта
- Откройте CLI / Terminal и введите:
cordova plugin add https://github.com/don/FileOpener.git
- После успешной загрузки и хранения вашего файла на устройстве (см. Выше) вы открываете его с помощью:
window.plugins.fileOpener.open("file:///sdcard/Android/data/com.example.application/document.doc")
или соответствующий путь на iOS.
Это оно! Удачи!
Удостовериться
Вы должны установить git и установить плагины для файлов (cordova 3.0+)
Плагин для передачи файлов и файлов
$ cordova plugin add org.apache.cordova.file
$ cordova plugin add org.apache.cordova.file-transfer
Ps. Попробуй плагин файл Opener2
Убедитесь, что у вас есть эти строки в файле manifest.xml:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Вы можете найти помощь здесь Как скачать pdf файл в Android?
Попробуйте открыть все документы из URL, выполнив следующие действия:
- установить этот плагин: плагин cordova добавить https://github.com/ti8m/DocumentHandler
используйте этот код:
handleDocumentWithURL (function () {console.log ('success');}, function (error) {console.log ('fail'); if (error == 53) { console.log('Нет приложения, которое обрабатывает этот файл type. ');}},' http://www.example.com/path/to/document.pdf');
У меня это работает как на Android, так и на IOS. Я использовал его для открытых изображений и файлов PDF.
Android: он открывает файлы с помощью системных приложений, если таковые имеются, в противном случае выдает ошибку, с которой вы можете справиться.
IOS: открывает файлы в виде всплывающих окон, например, с помощью кнопки " Готово" и кнопки " Параметры".
Он не показывает URL ваших документов.
Источник доступен здесь: https://github.com/ti8m/DocumentHandler