En el foro podemos ver tres códigos para actuar con comandos en el Android.
- Uno de ellos...
Dim Command, Runner As String
Dim StdOut, StdErr As StringBuilder
Dim Result As Int
Dim Ph As Phone
StdOut.Initialize
StdErr.Initialize
Runner = File.Combine(File.DirInternalCache, "runner")
Command = File.Combine(File.DirInternalCache, "command")
File.WriteString(File.DirInternalCache, "runner", "su < " & Command)
File.WriteString(File.DirInternalCache, "command", "cd /mnt/sdcard" & CrLf & "mkdir holaamigo" & CrLf & "exit") 'Any commands via crlf, and exit at end
Result = Ph.Shell("sh", Array As String(Runner), StdOut, StdErr)
Msgbox(StdOut.tostring, "")
- Es necesario la librería Phone.
- Otro lo hace con librería SuCommand que puedes bajar de SuCommand.zip
- Este código también del foro, funciona mejor
Dim p As Phone
' File.WriteString(File.DirRootExternal, "1.sh", "#!/bin/sh" & CRLF & "echo test")
File.WriteString(File.DirRootExternal, "1.sh", "#!/bin/sh" & CRLF & "mkdir /mnt/sdcard/JUAN")
Dim out, err As StringBuilder
out.Initialize : err.Initialize
p.Shell("sh", Array As String(File.Combine(File.DirRootExternal, "1.sh")), out, err)
Log("out: " & out)
Log("err: " & err)
Renombrar un archivo...
p.Shell( "mv " & origen & " " & destino, Null , out, err)
_____________________________
- Versión de Android SDK.
Activamos la librería Phone, creamos un botón y copiamos este código. En el Log obtendermos la versión del Android SDK que estamos utilizando.
Sub Button1_Click
Dim tabla(20) As String
Dim Ph As Phone
tabla(1)= "1.0 - BASE"
tabla(2)= "1.1 - BASE_1_1"
tabla(3)= "1.5 - CUPCAKE"
tabla(4)= "1.6 - DONUT"
tabla(5)= "2.0 - ECLAIR"
tabla(6)= "2.0.1 - ECLAIR_0_1"
tabla(7)= "2.1.x - ECLAIR_MR1"
tabla(8)= "2.2.x - FROYO"
tabla(9)= "2.3 - GINGERBREAD"
tabla(10)= "2.3.3 - GINGERBREAD_MR1"
tabla(11)= "3.0.x - HONEYCOMB"
tabla(12)= "3.1.sx - HONEYCOMB_MR1"
tabla(13)= "3.2 - HONEYCOMB_MR2"
tabla(14)= "4.0, 4.0.1, 4.0.2 - ICE_CREAM_SANDWICH"
tabla(15)= "4.0.3, 4.0.4 - CE_CREAM_SANDWICH_MR1"
tabla(16)= "4.1, 4.1.1 - JELLY_BEAN"
tabla(17)= "4.2, 4.2.2 - JELLY_BEAN_MR1"
tabla(18)= "4.3 - JELLY_BEAN_MR2"
tabla(19)= "4.4 - KITKAT"
Log(tabla(Ph.sdkVersion))
End Sub
En el Log tendremos la versión de SDK que estamos utilizando.
____________________________
- Listado de aplicaciones instaladas.
Código de los foros.
- Todos los paquetes
Dim pm As PackageManager
Dim packages As List
packages = pm.GetInstalledPackages
For i = 0 To packages.Size - 1
Log(packages.Get(i))
Next
- Instalados por el usuarios
Dim Obj1, Obj2, Obj3 As Reflector
Dim size, i, flags As Int
Dim msg, name As String
Obj1.Target = Obj1.GetContext
Obj1.Target = Obj1.RunMethod("getPackageManager") ' PackageManager
Obj1.Target = Obj1.RunMethod2("getInstalledPackages", 0, "java.lang.int") ' List<PackageInfo>
size = Obj1.RunMethod("size")
For i = 0 To size -1
Obj2.Target = Obj1.RunMethod2("get", i, "java.lang.int") ' PackageInfo
name = Obj2.GetField("packageName")
Obj3.Target = Obj2.GetField("applicationInfo") ' ApplicationInfo
flags = Obj3.GetField("flags")
msg = msg & name & " : " & flags & CRLF
Next
Msgbox(msg,"")
También lo podemos realizar haciendo un listado largo (ls -l) con los códigos que hemos visto anteriormente para aplicar comandos desde la aplicación.
File.WriteString(File.DirRootExternal, "1.sh", "#!/bin/sh" & CRLF & "ls -l")
______________________
- Ocultar el teclado.
A veces nos sale el teclado en pantalla y queremos ocultarlo, una forma de hacerlo por código es
Dim IME1 As IME
IME1.Initialize( "" )
IME1.HideKeyboard
___________________________________________
- Obtener la aplicación que gestiona un Intent.
Dim In As Intent
In.Initialize(In.ACTION_VIEW, "http://www.google.com")
Log(FindDefaultApp(In))
End Sub
Sub FindDefaultApp(In As Intent) As String
Dim r As Reflector
r.Target = r.GetContext
Dim pm As Object
pm = r.RunMethod("getPackageManager")
r.Target = pm
Dim mInfo As Object
mInfo = r.RunMethod4("resolveActivity", Array As Object(In, 0), _
Array As String("android.content.Intent", "java.lang.int"))
If mInfo = Null Then Return "" 'no activity found
r.Target = mInfo
r.Target = r.GetField("activityInfo")
r.Target = r.GetField("applicationInfo")
Return r.GetField("packageName")
_____________________________
- Mover izquierda derecha y viceversa.
Este código es de los foros. Indica si el usuario ha movido el dedo por la pantalla de derecha a izquierda o viceversa.
Sub Process_Globals
Dim MOVEMENT_THRESHOLD As Int
MOVEMENT_THRESHOLD = 100dip
End Sub
Sub Globals
Dim Panel1 As Panel
Dim StartX As Int
End Sub
Sub Activity_Create(FirstTime As Boolean)
Panel1.Initialize("Panel1")
Activity.AddView(Panel1, 0, 0, 100%x, 100%y)
End Sub
Sub Panel1_Touch (Action As Int, X As Float, Y As Float) As Boolean 'Return True to consume the event
Select Action
Case Activity.ACTION_DOWN
StartX = X
Case Activity.ACTION_UP
If Abs(X - StartX) > MOVEMENT_THRESHOLD Then
Swipe(X < StartX)
End If
End Select
Return True
End Sub
Sub Swipe(Left As Boolean)
If Left Then Msgbox("Left", "") Else Msgbox("Right", "")
End Sub
________________________________