Spanish File.ExternalWritable siempre es False

Saludos, ya en varios celulares con versiones distintas de Android (10, 4.x, etc) , la función File.ExternalWritable siempre regresa False y en mi Manifest tengo de forma correcta: AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)

Adicionalmente (sólo en Android 10, en otras versiones si funciona) no logro hace que KeyValueStore (KeyValueStore.b4xlib) funcione bien, al momento de hacer kvs.Initialize(File.DirRootExternal, "datastore2") siempre lanza el error: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database


Alguna sugerencia?
Gracias
 

drgottjr

Expert
Licensed User
Longtime User
olvidate de lo "external." por el momento, es dificil y molesto, y va cambiando de una version de android al proximo. pronto sera imposible. te toca a ti estar
al tanto de los cambios de android. sobre todo en lo que al acceso a archivos fuera de tu app se refiere. veo que hace tiempo que eres miembro.

antes, podias guardar y abrir archivos casi doquiera que se encontraran. ahora no. el sistema se ocupa de facilitar estos tramites mediante "proveedores" (file provider). ya te he dado un vinculo a "compartir" con un mundo de ejemplos. has de comprender que android se esta poniendo mas y mas exigente. google no quiere que accedas a archivos fuera de tu app. la unica manera es no desarrollar apps para sdk29, 30 y p'arriba. si tus apps son para ti, entonces adelante con sdk24, 25. si pretendes publicar en play, entonces tienes que comprender lo que exige google. asi evitas una perdida de tiempo escribiendo cosas que no van a funcionar muy pronto. dir.internal y rp.getsafedirdefaultexternal son las carpetas que has de usar para tu propio i/o. si pretendes acceder a archivos en otras carpetas, se complica la cosa y has de usar "proveedores"
 
olvidate de lo "external." por el momento, es dificil y molesto, y va cambiando de una version de android al proximo. pronto sera imposible. te toca a ti estar
al tanto de los cambios de android. sobre todo en lo que al acceso a archivos fuera de tu app se refiere. veo que hace tiempo que eres miembro.

antes, podias guardar y abrir archivos casi doquiera que se encontraran. ahora no. el sistema se ocupa de facilitar estos tramites mediante "proveedores" (file provider). ya te he dado un vinculo a "compartir" con un mundo de ejemplos. has de comprender que android se esta poniendo mas y mas exigente. google no quiere que accedas a archivos fuera de tu app. la unica manera es no desarrollar apps para sdk29, 30 y p'arriba. si tus apps son para ti, entonces adelante con sdk24, 25. si pretendes publicar en play, entonces tienes que comprender lo que exige google. asi evitas una perdida de tiempo escribiendo cosas que no van a funcionar muy pronto. dir.internal y rp.getsafedirdefaultexternal son las carpetas que has de usar para tu propio i/o. si pretendes acceder a archivos en otras carpetas, se complica la cosa y has de usar "proveedores"

Excelente, gracias por tus comentarios.
Ya resolvi el problema de acceso usando solo File.DirInternal
Pero quiero desarrollar app de android 4.4 para arriba (al menos hatas la 10) para dar facilidad a cualquier usuario, que sdk entonces debería ser el mas recomendado.???
 
Last edited:

drgottjr

Expert
Licensed User
Longtime User
la version minima para nuevas apps distribuidas en play es 29. a partir de agosto sera 30. si vas a regalar tus apps directamente a tus amigos, entonces es posible que logres lo que pretendes con 29 para abajo. pero mucho depende de lo que hacen tus apps y de los modelos de mobil que usan tus companeros. lo de las carpetas es solo una parte de android. normalmente no hay porqué guardar cosas en direxternal. desde el punto de vista de google, es un riesgo a la seguridad, y aquella ventana viene y va cerrandose con cada nueva version del sistema operativo. ten en cuenta que si tu permites que se guarden archivos importantes en direxternal, qualquier app (malvada o no) podra acceder a ellos. y tu no sabes que tipo de apps acabaran en los mobiles de tus usuarios. tampoco lo sabe google; por lo tanto no quiere que las apps salgan directamente al exterior. google nos ha dejado ciertas excepciones para facilitar la adapcion de nuestras apps a los cambios, pero seran borradas proximamente.

si te puedes contentar con dirinternal, no hay problema. pero no sabemos lo que hacen tus apps.
 
la version minima para nuevas apps distribuidas en play es 29. a partir de agosto sera 30. si vas a regalar tus apps directamente a tus amigos, entonces es posible que logres lo que pretendes con 29 para abajo. pero mucho depende de lo que hacen tus apps y de los modelos de mobil que usan tus companeros. lo de las carpetas es solo una parte de android. normalmente no hay porqué guardar cosas en direxternal. desde el punto de vista de google, es un riesgo a la seguridad, y aquella ventana viene y va cerrandose con cada nueva version del sistema operativo. ten en cuenta que si tu permites que se guarden archivos importantes en direxternal, qualquier app (malvada o no) podra acceder a ellos. y tu no sabes que tipo de apps acabaran en los mobiles de tus usuarios. tampoco lo sabe google; por lo tanto no quiere que las apps salgan directamente al exterior. google nos ha dejado ciertas excepciones para facilitar la adapcion de nuestras apps a los cambios, pero seran borradas proximamente.

si te puedes contentar con dirinternal, no hay problema. pero no sabemos lo que hacen tus apps.

Excelente tu aporte amigo, muchas gracias.
 
Top