Spanish Error al instalar apk (Resuelto)

piramide

Member
Licensed User
Hola a todos, resulta que al instalar una apk descargando el link de dicha apk de un dropbox al celular me da los siguientes erroress.
Si en la app uso una base de datos sqlite: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE, CANTOPEN): Could not open database
Si en lugar de la base de datos uso un txt: java.io.FileNotFoundException:/storage/emulated/0/name.txt:eek:pen failed: EACCES (permission denied)
Posterior a esto le agregue en el editor maninfest las siguientes lineas:
AddPermission(android.permission.MANAGE_DOCUMENTS)
AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
AddPermission(android.permission.READ_EXTERNAL_STORAGE)

Pero sigue dando error, que esta succediendo? Hay otra forma de instalar la apk?
Desde ya gracias.
 
Last edited:

José J. Aguilar

Expert
Licensed User
Hola piramide:

No creo que sea problema de cómo instalar la apk, sino de en qué directorio estas guardando tu base de datos o tu fichero de texto.

pero necesitamos ver tu código, para ver cómo accedes al fichero.

saludos
 

drgottjr

Well-Known Member
Licensed User
el j. aguilar me ha adelantado. vamos a ver cómo le respondes. desde luego no parece ser cuestión de instalar, sino de funcionar. además, no logro comprender por qué instalas una app tuya desde dropbox...
 

piramide

Member
Licensed User
Captura1.PNG
 

piramide

Member
Licensed User
Lo del dropbox quiero aclarar que es por donde yo subo el apk para pasarle el link a otro programador que trabaja junto a mi y que pueda descargar y hacer la instalacion del apk en su celular.
 

José J. Aguilar

Expert
Licensed User
Por favor, cuando pongas codigo, no pegues pantallazos, pon tu codigo entre etiquetas [ code]tu codigo [ /code] (sin espacios tras los corchetes.

creo que el error esta en usar File.DirRootExternal, que debe evitar usarse.

echa un ojo a este post
 

piramide

Member
Licensed User
Bueno. Gracias x responder. Cambiare el File.DirRootExternal.
Voy a escribir aqui como me fue.
 

drgottjr

Well-Known Member
Licensed User
y si optas por sqlite db y si lo incluyes (aunque vacío) en la .apk, tienes que copiarlo de file.dirasset hasta file.dirinternal al arrancarse la app por primera vez. sqlite no funciona en file.dirasset. ojo: una vez copiado a file.dirinternal, sólo averiguas su existencia allí cuando se arranca la app posteriormente. si lo copias ciegamente, pierdes todo la db. ahora, si el usuario construye la db en la app, entonces sólo necesitas que el archivo esté en file.dirinternal desde el principio. como dice josé, file.direxternal no se usa. (¿por qué existe en primer lugar? es una pregunta interesante. quizá algo así como la manzana en edén: admirar pero no comer...)
 

piramide

Member
Licensed User
Gracias x sus respuestas y consejos Jose Aguilar y drgottjr.
Ahora uso servicio.DBFilePath=File.DirInternal y ademas en activity_create agregue la linea File.MakeDir(servicio.DBFilePath,"prueba")
Instale la apk en otro dispositivo y funciona de maravilla.
Pero lo que no logro entender es en que ubicacion de la memoria esta mi carpeta "prueba". No la estoy viendo.
Será que está oculta?
 

drgottjr

Well-Known Member
Licensed User
Pero lo que no logro entender es en que ubicacion de la memoria esta mi carpeta "prueba".
está en
servicio.DBFilePath
donde la pusiste... ¿no?

No la estoy viendo
¿qué quiere decir esto?

B4X:
if file.exists( servicio.DBFilePath", "prueba") then
   log("el archivo está donde lo puse")
else
   log("no sé dónde está")
end if

¿qué más quieres? si funciona la app, el archivo está sano y salvo. si no funcionaba, el archivo (y probablemente la carpeta) no existerían y habría un error al intentar acceder al uno o a la otra. ¿hay error o no?
 

José J. Aguilar

Expert
Licensed User
Será que está oculta?
Como contesta drgottjr en este otro hilo

Esa carpeta es una carpeta segura sólo visible para tu aplicación.
Echa un vistazo a este tutorial si quisieras guardarla en una ubicación externa y accesible (claro que te arriesgas a que tu usuario borre datos de tu app)
 

piramide

Member
Licensed User
Perfecto. Entendi Jose. Entendi drgottjr. Gracias.
Ahora instale la apk en otros celulares y se instalo bien.
Lo unico que estoy revisando es que dicha aplicacion tiene un servicio que cada cierto tiempo lee un archivo en un servidor para dar un aviso y solo me funciona en 1 celular de los 4 donde lo instale. Puede ser que talves el problema ahora lo tengo en el codigo del service. ¿?
 

José J. Aguilar

Expert
Licensed User
Puede ser que talves el problema ahora lo tengo en el codigo del service
Es muy probable. Ten en cuenta que los servicios son fáciles de implementar, pero algo más complejos de mantener funcionando cuando la aplicación no está visible.
Por favor, abre un nuevo hilo y pon tu código para echarle un ojo.
Este es un buen ejemplo de un servicio funcionando siempre:
 
Top