Я занимаюсь разработкой приложения NativeScript для Android и использую QuickBlox.Я могу открыть изображения и аудиофайлы внутри приложения, но есть некоторые проблемы с документами .pdf, Word и Excel.
Код, написанный коллегой:
var attID = message.attachments[0].id
var fileSrc = ChatManager.getQB().content.publicUrl(attID) + "/" + "/download.xml?token=" + ChatManager.getSessionToken()
Я получаюURL с BLOB + токеном сессии, затем:
var intent = new android.content.Intent(android.content.Intent.ACTION_VIEW, android.net.Uri.parse(args.object.src));
intent.addCategory(android.content.Intent.CATEGORY_BROWSABLE);
application.android.startActivity.startActivity(intent);
Таким образом, я успешно загружаю файлы .pdf, но .doc, .docx, .xls и .xlsx возвращаются без расширения.Я также попытался получить URL через privateUrl()
(без интерполяции токена), с тем же результатом.
Другой неработающий метод:
httpModule.request({
url: uid,
method: 'GET',
headers: {
'QuickBlox-REST-API-Version': '0.1.0',
'QB-Token': ChatManager.getSessionToken()
}
}).then(res => {
var file = res.content.toFile();
var intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
var uri = android.net.Uri.fromFile(new java.io.File(file.path));
intent.setDataAndType(uri, 'application/pdf');
application.android.startActivity.startActivity(android.content.Intent.createChooser(intent, 'Apri file...'));
});
В любом случае, я пытаюсь, похожеQuickBlox возвращает расширение только для файлов .pdf.Есть предложения?
ОБНОВЛЕНИЕ:
Я пытался открыть URL на разных устройствах.
https://api.quickblox.com/blobs/[blobId]?token=[token]
В Chrome для Windows и iOS Safari файл загружаетсяили правильно открыт в браузере.На Android он возвращается без расширения в следующих браузерах: Chrome e LineageOS.В интернете Samsung 7.4.00.70 корректно открывается в браузере.
При httpModule.request()
я получаю это предупреждение в консоли отладки по результату:
Resource interpreted as Document but transferred with MIME type [my file mime type]