Недавно я разработал приложение, которое загружает PDF-файлы с сервера и сохраняет их в локальном хранилище.
Я могу открыть файл, если не удалю приложение. Если я переустановлю приложение, я не смогу открыть файл.
Кроме того, мне не нужен доступ к другим папкам, поскольку я нацеливаюсь только на папку (папку, которая будет создана) в папке загрузок.
Я пробовал использовать различные методы, такие как медиамагазин или что-то новое, но не смог решить проблему.
fun openPdfIntent(filePath: File, context: Context) {
Log.i("Pdf", "openPdfIntent: ${filePath.absolutePath} ")
val pdfIntent = Intent(Intent.ACTION_VIEW)
val path =
FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", filePath)
pdfIntent.setDataAndType(
path,
"application/pdf"
)
pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
try {
if (filePath.canRead()) {
Log.i("Pdf", "openPdfIntent: exists and open")
context.startActivity(pdfIntent)
} else {
pdfIntent.setDataAndType(
filePath.toUri(),
"application/pdf"
)
pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
Log.i("Pdf", "openPdfIntent: Doesn't exists ")
}
} catch (e: Exception) {
Toast.makeText(context, "Please Install Pdf Viewer", Toast.LENGTH_SHORT).show()
if (filePath.exists()) {
filePath.delete()
Log.i("Pdf", "openPdfIntent: Deleted ")
}
}
}
//function to download files.
fun onDownload(
index: Int,
url: String,
unitName: String,
subjectName: String,
context: Context,
) {
viewModelScope.launch(IO) {
val kDownloader = KDownloader.create(context)
withContext(
IO
) {
this.async {
val req = kDownloader.newRequestBuilder(
url,
getFileDirectory(context).path + "/KIET PDFS/$subjectName",
"${subjectName}_${unitName}.pdf"
).build()
kDownloader.enqueue(req,
onStart = {
Log.i("Downloads", "onDownload: Started for file $unitName.pdf")
downloadStatus[index] = downloadStatus[index].copy(
downloadProgress = DownloadProgress.Running
)
},
onCompleted = {
Log.i("Downloads", "onDownload: Success for $unitName.pdf ")
downloadStatus[index] = downloadStatus[index].copy(
downloadProgress = DownloadProgress.Success
)
}, onError = {
Log.i("Downloads", "onDownload: Error $it")
downloadStatus[
index
] = downloadStatus[index].copy(
downloadProgress = DownloadProgress.Failed
)
}
)
}.await()
}
}
}
fun getFileDirectory(context: Context): File {
return if (Build.VERSION.SDK_INT
file_paths.xml
Подробнее здесь: https://stackoverflow.com/questions/783 ... ng-the-app
Невозможно открыть загруженные файлы после переустановки приложения. ⇐ Android
Форум для тех, кто программирует под Android
1714137307
Anonymous
Недавно я разработал приложение, которое загружает PDF-файлы с сервера и сохраняет их в локальном хранилище.
Я могу открыть файл, если не удалю приложение. Если я переустановлю приложение, я не смогу открыть файл.
Кроме того, мне не нужен доступ к другим папкам, поскольку я нацеливаюсь только на папку (папку, которая будет создана) в папке загрузок.
Я пробовал использовать различные методы, такие как медиамагазин или что-то новое, но не смог решить проблему.
fun openPdfIntent(filePath: File, context: Context) {
Log.i("Pdf", "openPdfIntent: ${filePath.absolutePath} ")
val pdfIntent = Intent(Intent.ACTION_VIEW)
val path =
FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", filePath)
pdfIntent.setDataAndType(
path,
"application/pdf"
)
pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
try {
if (filePath.canRead()) {
Log.i("Pdf", "openPdfIntent: exists and open")
context.startActivity(pdfIntent)
} else {
pdfIntent.setDataAndType(
filePath.toUri(),
"application/pdf"
)
pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
Log.i("Pdf", "openPdfIntent: Doesn't exists ")
}
} catch (e: Exception) {
Toast.makeText(context, "Please Install Pdf Viewer", Toast.LENGTH_SHORT).show()
if (filePath.exists()) {
filePath.delete()
Log.i("Pdf", "openPdfIntent: Deleted ")
}
}
}
//function to download files.
fun onDownload(
index: Int,
url: String,
unitName: String,
subjectName: String,
context: Context,
) {
viewModelScope.launch(IO) {
val kDownloader = KDownloader.create(context)
withContext(
IO
) {
this.async {
val req = kDownloader.newRequestBuilder(
url,
getFileDirectory(context).path + "/KIET PDFS/$subjectName",
"${subjectName}_${unitName}.pdf"
).build()
kDownloader.enqueue(req,
onStart = {
Log.i("Downloads", "onDownload: Started for file $unitName.pdf")
downloadStatus[index] = downloadStatus[index].copy(
downloadProgress = DownloadProgress.Running
)
},
onCompleted = {
Log.i("Downloads", "onDownload: Success for $unitName.pdf ")
downloadStatus[index] = downloadStatus[index].copy(
downloadProgress = DownloadProgress.Success
)
}, onError = {
Log.i("Downloads", "onDownload: Error $it")
downloadStatus[
index
] = downloadStatus[index].copy(
downloadProgress = DownloadProgress.Failed
)
}
)
}.await()
}
}
}
fun getFileDirectory(context: Context): File {
return if (Build.VERSION.SDK_INT
file_paths.xml
Подробнее здесь: [url]https://stackoverflow.com/questions/78390639/cannot-open-the-downloaded-files-after-reinstalling-the-app[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия