Spanish ¿Cómo llamar a un fichero para que lo abra con el visor predeterminado?

nachoap10

Member
Licensed User
Longtime User
Hola:

Estoy haciendo una aplicación que ha de ser capaz de abrir libros en formato fb2 al pulsar sobre su portada. La forma de llamarlos debería ser la misma que tiene FileExpert: o bien que abra CoolReader directamente o bien que pregunte con qué aplicación se desea abrir, y que muestre una lista de aplicaciones disponibles.

La duda que tengo es cómo se hace para llamar a un fichero para que lo "ejecute", es decir, para que lo abra con su visor predeterminado. Supongo que será sencillo, pero no encuentro la forma de hacer la llamada, y mirando los títulos de los tutoriales no he visto ninguno que parezca hacer algo así.

Muchas gracias por adelantado, y perdonad si esto ya se ha respondido en algún otro sitio.
 

nachoap10

Member
Licensed User
Longtime User
Con la ayuda de Erel ha quedado resuelto. Os dejo el código para llamar a un fichero fb2 cuyo nombre es "Fronteras [1234].fb2". La primera vez aparece la lista de aplicaciones capaces de leer ficheros MIME de tipo texto (entre ellas, CoolReader). Si se memoriza ese programa como el que hay que usar por defecto, las siguientes ejecuciones lo abren directamente.

He incluido una función de cosecha propia para cambiar los espacios, signos especiales y signos prohibidos por sus códigos hexadecimales. ¡Ojo! No cambiéis el orden (el % ha de ser el primero en tratarse, o se cargará el resto de % de los valores hexadecimales). El único signo que no trata es la comilla doble ("), por razones relativas al programa que estoy haciendo.



Sub PonerURL(sCadena As String) As String
Dim i As Long
Dim sAux As String
Dim StrOrg() As String
Dim StrDst() As String

StrOrg = Array As String("%", "!", "#", "$", "&", "'", "(", ")", "*", "+", ",", "/", ":", ";", "=", "?", "@", "[", "]", " ", "<", ">", "\", "^", "`", "{", "|", "}", "€", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "Š", "‹", "Œ", "Ž", "‘", "’", "“", "”", "•", "–", "—", "˜ ", "™", "š", "›", "œ", "ž", "Ÿ", "¡", "¢", "£", "¥", "|", "§", "¨", "©", "ª", "«", "¬", "¯", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ")
StrDst = Array As String("%25", "%21", "%23", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%2C", "%2F", "%3A", "%3B", "%3D", "%3F", "%40", "%5B", "%5D", "%20", "%3C", "%3E", "%5C", "%5E", "%60", "%7B", "%7C", "%7D", "%80", "%82", "%83", "%84", "%85", "%86", "%87", "%88", "%89", "%8A", "%8B", "%8C", "%8E", "%91", "%92", "%93", "%94", "%95", "%96", "%97", "%98", "%99", "%9A", "%9B", "%9C", "%9E", "%9F", "%A1", "%A2", "%A3", "%A5", "%A6", "%A7", "%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF", "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7", "%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF", "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7", "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF", "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF", "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7", "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF", "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7", "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF")

sAux = sCadena
For i = 0 To StrOrg.Length-1
sAux = sAux.Replace(strOrg(i), strDst(i))
Next

Return sAux
End Sub


Sub Button1_Click
Dim inAct As Intent
Dim s As String

' El libro a abrir está en /sdcard/ y se llama Fronteras [1234].fb2
s = "Fronteras [1234].fb2"

' Cambiamos los caracteres reservados y prohibidos en la URL por sus códigos
s = PonerURL(s)

inAct.Initialize(inAct.ACTION_VIEW, "file:///sdcard/"&s)
inAct.SetType("text/*")
Try
StartActivity(inAct)
Catch
ToastMessageShow("No puedo abrir el fichero.", True)
End Try
End Sub
 
Top