Dado que no hay una API específica para conocer el nombre de la tarjeta externa, me he hecho una cutre función.
La he probado en varios dispositivos diferentes y en todos los casos me devuelve el nombre correctamente, peeeero como seguro que no es infalible, os pido si la podeis probar, a ver si entre todos la podemos pulir.
Os dejo el código:
La libreria OsLibrary (24K), la podeis descargar desde aquí:
https://www.b4x.com/android/forum/threads/os-library.11267/
Gracias
La he probado en varios dispositivos diferentes y en todos los casos me devuelve el nombre correctamente, peeeero como seguro que no es infalible, os pido si la podeis probar, a ver si entre todos la podemos pulir.
Os dejo el código:
B4X:
Sub Activity_Resume
Msgbox(SDExterna, "")
End Sub
Sub SDExterna() As String
'compruebo las posibles ubicaciones de la sd externa
Dim Externa As String
Dim posiblesunidades() As String, a As Int, encontrado As Boolean
posiblesunidades = Array As String("/storage", "/mnt", File.DirRootExternal)
Dim externas() As String, e As Int
externas = Array As String("/ext_card", "/external_sd", "/extsd", "/ext_sd", "/external", "/extSdCard", "/externalSdCard", "/sdcard-ext", "/sdcard0", "/sdcard1", "/sdcard2", "/usbcard1")
For a = 0 To posiblesunidades.Length - 1
For e = 0 To externas.Length - 1
If File.Exists(posiblesunidades(a) & externas(e), "") = True Then
Externa = posiblesunidades(a) & externas(e)
'compruebo que no sea la misma ruta
If Externa <> File.DirRootExternal Then
Try
'ahora compruebo si tienen la misma capacidad y el mismo espacio libre
'si son iguales la descarto
'la ruta puede ser diferente, pero apuntar a la misma ubicacion.
'por ejemplo File.DirRootExternal = /storage/sdcard/0 puede ser igual a /storage/sdcard0
'por lo que no sería la externa.
Dim os As OperatingSystem
os.Initialize("")
Dim tt As Long = os.getFreeBlocks(Externa)
Dim ttt As Long = os.getBlockCount(Externa)
Dim tt1 As Long = os.getFreeBlocks(File.DirRootExternal)
Dim ttt1 As Long= os.getBlockCount(File.DirRootExternal)
If tt <> tt1 AND ttt <> ttt1 Then
encontrado = True
Exit
End If
Catch
Log("")
End Try
Else
Externa = ""
End If
End If
Next
If encontrado = True Then
Return Externa
End If
Next
Return Externa
End Sub
La libreria OsLibrary (24K), la podeis descargar desde aquí:
https://www.b4x.com/android/forum/threads/os-library.11267/
Gracias