Bueno, pues os vuelvo a pedir ayuda. ¿Alguien sabe cómo vincular CoolReader a los Intent de tipo "text/*"?
Os dejo el código que tengo. Ya es capaz de copiar el libro de la carpeta oculta a la de trabajo (si no existe ya) y de realizar la llamada al libro copiado, pero en la lista de programas disponibles no aparece CoolReader por ninguna parte. Imagina que tiene que haber alguna forma de que se pueda asociar. De hecho, si pulso en un fb2 desde file expert, sí sale CoolReader en la lista, pero ni desde Root explorer ni desde la aplicación salen. LA llamada que realizo es la misma que en lipapa android, que funciona en todas las tabletas y teléfonos "decentes".
En fin, es el penúltimo paso que he de seguir para dar por factible un lipapa en el T1 (el último será la prueba de que con la poca memoria que le queda es capaz de trabajar con una bd de 30 megas, pero es un tema que ya llegará en su momento).
Gracias por adelantado
-----------------------------------------------------------------------------------------------------
'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim btAbrir As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Entrada")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
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", "%3A", "%3B", "%3D", "%3F", "%40", "%5B", "%5D", "%20", "%3C", "%3E", "/", "%5E", "%60", "%7B", "%7C", "%7D")
' StrOrg = Array As String("%", "!", "#", "$", "&", "'", "(", ")", "*", "+", ",", ":", ";", "=", "?", "@", "[", "]", " ", "<", ">", "\", "^", "`", "{", "|", "}", "€", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "Š", "‹", "Œ", "Ž", "‘", "’", "“", "”", "•", "–", "—", "˜ ", "™", "š", "›", "œ", "ž", "Ÿ", "¡", "¢", "£", "¥", "|", "§", "¨", "©", "ª", "«", "¬", "¯", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ")
' StrDst = Array As String("%25", "%21", "%23", "%24", "%26", "%27", "%28", "%29", "%2A", "%2B", "%2C", "%3A", "%3B", "%3D", "%3F", "%40", "%5B", "%5D", "%20", "%3C", "%3E", "/", "%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 EjecutarRoot (comando As String)
Dim Command, Runner As String
Dim StdOut, StdErr As StringBuilder
Dim Result As Int
Dim Ph As Phone
Runner = File.Combine(File.DirInternalCache, "runner")
Command = File.Combine(File.DirInternalCache, "command")
File.WriteString(File.DirInternalCache, "runner", "su < " & Command)
File.WriteString(File.DirInternalCache, "command", comando & CRLF & "exit") 'Any commands via crlf, and exit at end
StdOut.Initialize
StdErr.Initialize
Result = Ph.Shell("sh", Array As String(Runner), StdOut, StdErr)
MsgboStdOut.tostring, "")
End Sub
Sub AbrirLibro (RutaLibro As String)
Dim inAct As Intent
Dim RutaL, RutaE, Prefijo, Origen, Destino, sFichero, sOrg, sOrg2, sFicheroDst As String
Dim NumLetras, i, iPos As Long
Dim TR As TextReader
Prefijo = "file://" & "mnt/extsd/MISLIBROS/"
Origen = "/mnt/extsd/.LIBROS/"
Destino = "/mnt/extsd/MISLIBROS/"
' Número de letras a descartar (prefijo de lipapa)
NumLetras = 10
If NumLetras < RutaLibro.Length Then
' Descartamos las primeras
sFichero = RutaLibro.SubString(NumLetras)
iPos = RutaLibro.LastIndexOf("\")
sFicheroDst = RutaLibro.SubString2(iPos+1, RutaLibro.Length)
sOrg = Prefijo & PonerURL(sFicheroDst)
sOrg2 = sFichero.Replace("\", "/")
'Copiar si no existe
'EjecutarRoot("mkdir /mnt/extsd/MISLIBROS")
If Not(File.Exists(Destino, sFicheroDst)) Then
EjecutarRoot("cat '" & Origen & sOrg2 & "'>'" & Destino & sFicheroDst & "'")
End If
' Abrir el libro
Try
inAct.Initialize(inAct.ACTION_VIEW, sOrg)
inAct.SetType("text/*")
StartActivity(inAct)
Catch
ToastMessageShow("No puedo abrir el libro: " & sOrg, True)
End Try
Else
ToastMessageShow("El libro seleccionado no tiene la ruta asignada. Haz Copiar en ebook desde Lipapa para PC", True)
End If
End Sub
Sub btAbrir_Click
'El tipo de rutas que se encontrará en RUTAPAPYRE, en la bd de lipapa
AbrirLibro("C:\LIBROS\A\AS\ASI\Asimov, Isaac & Janet\Fronteras II [10349].FB2")
End Sub