Spanish "/mnt/extsd"

Pedrol

Member
Licensed User
Longtime User
Hola, saludos a todos, mi problema es como saber si la tarjeta SD esta montada en la tablet, he probado con algunas rutinas que aparecen en foro, pero nada, no detecta si hay o no tarjeta, la aplicacion graba un archivo de texto cuando esta inserta la SD de manera correcta, pero si no esta, intenta hacerlo y se va todo al infierno pues no tiene donde grabar, apreciaria alguna idea,
Gracias
Pedrol
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola:

La dirección que pones de "/mnt/extsd" no es correcta, al menos en varios moviles que he probado. Una forma facil de saber los nombres de los directorios es emplear el FileDialog.
Con el FileDialog, a mi la tarjeta de memoria externa (no confundir con los directorios: File.DirRootExternal y File.DirDefaultExternal), el nombre para la tarjeta externa que me da es: "/storage/extSdCard"

Tienes dos formas para solucionar tu problema:
1) Compruebas si existe la memoria externa:

B4X:
  If File.IsDirectory("/storage/extSdCard","") = True Then
     Log("existe directorio")  
     ' aqui pones el crear tu fichero
  End If

  ' esto es lo mismo pero usando tanto la direccion como el nombre del directorio

  If File.IsDirectory("/storage","extSdCard") = True Then
    Log("existe directorio")  
     ' aqui pones el crear tu fichero
  End If


2) Prevenir que al escribir el fichero te de un error:

B4X:
  try

    ' aqui pones el código de grabar tu fichero
    '...............
    '...........
  catch
    ' Si da error al grabar entrara aqui, puedes poner un mensaje o hacer algo
     Msgbox("No se puede grabar el fichero","")
     ' ..........
     ' ......
  End try

Espero haberte ayudado

Saludos

Jesús
 

Pedrol

Member
Licensed User
Longtime User
Tarjeta SD externa

Hola, gracias por responder, sigo con mi problema la solucion dada no me funciona, con el filedialog me da que es el "mnt/extsd" y cuando grabo con el siguiente codigo estando la SD presente no tengo problema graba en la SD correctamente
ss="/mnt/extsd"
StrUtil.SaveCSV2(File.DirRootExternal,CSVFileName,",",Data,Header)
If File.ExternalWritable Then
StrUtil.SaveCSV2(ss,CSVFileName,",",Data,Header)
End If
pero si saco la tarjeta, por supuesto, me da error pues no existe donde grabar y se cae la aplicacion.
Se agradece alguna otra idea.
Saludos
 

Pedrol

Member
Licensed User
Longtime User
Alternativa para error

Hola, le he dado vueltas al asunto y se me ocurre que tal vez exista, como en el VisualBasic un instruccion "On Error Resume Next" que permite que la aplicacion cuando encuentra un error continua con la instruccion siguiente, eso evitaria que se arruine el proceso.
Saludos
Pedrol
 

Pedrol

Member
Licensed User
Longtime User
Solucionado

Hola de nuevo, con la cabeza ya poco me funciona, no me di cuenta de la opcion
try

' aqui pones el c�digo de grabar tu fichero
'...............
'...........
catch
' Si da error al grabar entrara aqui, puedes poner un mensaje o hacer algo
Msgbox("No se puede grabar el fichero","")
' ..........
' ......
End try
y claro, asi puedo controlar facilmente error de grabacion, les agradezco a todos,
Un abrazo, los felicito
pedrol
 
Top