Я делаю проект для чтения файлов Excel с моего телефона и вывода данных на экран. < /p>
Читать файл Excel: < /p>
private fun readDataExel() {
// val inputStream = assets.open("test.xlsx")
val file = Uri.parse("content://com.android.providers.media.documents/document/document%3A1000007061")
val inputStream = getContentResolver().openInputStream(file)
//Instantiate Excel workbook using existing file:
val workbook = WorkbookFactory.create(inputStream)
//Get reference to first sheet:
val sheet = workbook.getSheet("list")
for (row in sheet) {
if (row.getCell(0) == null || row.getCell(0).cellType == CellType.BLANK) {
break
}
val codeValue = row.getCell(0).stringCellValue.toString()
val liteCodeValue = codeValue.replace(".", "").replace("-", "")
val articleValue = row.getCell(1).stringCellValue.toString()
articles.add(ArticleModel(
code = codeValue,
liteCode = liteCodeValue,
title = articleValue
))
}
< /code>
Я получаю ошибку, когда пытаюсь преобразовать URI в inputstream.FATAL EXCEPTION: main
Process: com.scan.scanforphonekarcher, PID: 13375
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.scan.scanforphonekarcher/com.scan.scanforphonekarcher.MainActivity}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{dd2bdda 13375:com.scan.scanforphonekarcher/u0a477} (pid=13375, uid=10477) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{dd2bdda 13375:com.scan.scanforphonekarcher/u0a477} (pid=13375, uid=10477) r e q u i r e s t h a t y o u o b t a i n a c c e s s u s i n g A C T I O N _ O P E N _ D O C U M E N T o r r e l a t e d A P I s < b r / > a t a n d r o i d . o s . P a r c e l . c r e a t e E x c e p t i o n O r N u l l ( P a r c e l . j a v a : 3 0 2 3 ) < b r / > a t a n d r o i d . o s . P a r c e l . c r e a t e E x c e p t i o n ( P a r c e l . j a v a : 3 0 0 7 ) < b r / > at android.os.Parcel.readException(Parcel.java:2990)
at android.os.Parcel.readException(Parcel.java:2932)
at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:6136)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:7867)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:3638)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:2533)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2018)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1849)
at android.content.ContentResolver.openInputStream(ContentResolver.java:1525)
at com.scan.scanforphonekarcher.MainActivity.readDataCSV(MainActivity.kt:88)
at com.scan.scanforphonekarcher.MainActivity.onCreate(MainActivity.kt:46)
at android.app.Activity.performCreate(Activity.java:8591)
at android.app.Activity.performCreate(Activity.java:8570)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4150)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ContentProviderHelper.checkAssociationAndPermissionLocked(ContentProviderHelper.java:743)
at com.android.server.am.ContentProviderHelper.getContentProviderImpl(ContentProviderHelper.java:307)
at com.android.server.am.ContentProviderHelper.getContentProviderImpl(ContentProviderHelper.java:169)
at com.android.server.am.ContentProviderHelper.getContentProvider(ContentProviderHelper.java:143)
at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:8278)
< /code>
Я пытаюсь получить файл Exel с моего телефона. И прочитайте данные из файла < /p>
Я много гуглил и смотрел видео на YouTube, но я не нашел решение моей проблемы. < /P>
спасибо за помощь
Подробнее здесь: https://stackoverflow.com/questions/794 ... nputstream
Android Kotlin uri в inputstream ⇐ Android
Форум для тех, кто программирует под Android
1739546568
Anonymous
Я делаю проект для чтения файлов Excel с моего телефона и вывода данных на экран. < /p>
Читать файл Excel: < /p>
private fun readDataExel() {
// val inputStream = assets.open("test.xlsx")
val file = Uri.parse("content://com.android.providers.media.documents/document/document%3A1000007061")
val inputStream = getContentResolver().openInputStream(file)
//Instantiate Excel workbook using existing file:
val workbook = WorkbookFactory.create(inputStream)
//Get reference to first sheet:
val sheet = workbook.getSheet("list")
for (row in sheet) {
if (row.getCell(0) == null || row.getCell(0).cellType == CellType.BLANK) {
break
}
val codeValue = row.getCell(0).stringCellValue.toString()
val liteCodeValue = codeValue.replace(".", "").replace("-", "")
val articleValue = row.getCell(1).stringCellValue.toString()
articles.add(ArticleModel(
code = codeValue,
liteCode = liteCodeValue,
title = articleValue
))
}
< /code>
Я получаю ошибку, когда пытаюсь преобразовать URI в inputstream.FATAL EXCEPTION: main
Process: com.scan.scanforphonekarcher, PID: 13375
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.scan.scanforphonekarcher/com.scan.scanforphonekarcher.MainActivity}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{dd2bdda 13375:com.scan.scanforphonekarcher/u0a477} (pid=13375, uid=10477) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{dd2bdda 13375:com.scan.scanforphonekarcher/u0a477} (pid=13375, uid=10477) r e q u i r e s t h a t y o u o b t a i n a c c e s s u s i n g A C T I O N _ O P E N _ D O C U M E N T o r r e l a t e d A P I s < b r / > a t a n d r o i d . o s . P a r c e l . c r e a t e E x c e p t i o n O r N u l l ( P a r c e l . j a v a : 3 0 2 3 ) < b r / > a t a n d r o i d . o s . P a r c e l . c r e a t e E x c e p t i o n ( P a r c e l . j a v a : 3 0 0 7 ) < b r / > at android.os.Parcel.readException(Parcel.java:2990)
at android.os.Parcel.readException(Parcel.java:2932)
at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:6136)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:7867)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:3638)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:2533)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2018)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1849)
at android.content.ContentResolver.openInputStream(ContentResolver.java:1525)
at com.scan.scanforphonekarcher.MainActivity.readDataCSV(MainActivity.kt:88)
at com.scan.scanforphonekarcher.MainActivity.onCreate(MainActivity.kt:46)
at android.app.Activity.performCreate(Activity.java:8591)
at android.app.Activity.performCreate(Activity.java:8570)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4150)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ContentProviderHelper.checkAssociationAndPermissionLocked(ContentProviderHelper.java:743)
at com.android.server.am.ContentProviderHelper.getContentProviderImpl(ContentProviderHelper.java:307)
at com.android.server.am.ContentProviderHelper.getContentProviderImpl(ContentProviderHelper.java:169)
at com.android.server.am.ContentProviderHelper.getContentProvider(ContentProviderHelper.java:143)
at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:8278)
< /code>
Я пытаюсь получить файл Exel с моего телефона. И прочитайте данные из файла < /p>
Я много гуглил и смотрел видео на YouTube, но я не нашел решение моей проблемы. < /P>
спасибо за помощь
Подробнее здесь: [url]https://stackoverflow.com/questions/79439817/android-kotlin-uri-to-inputstream[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия