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