|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

99.- Comandos del Shell.


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
________________________________
- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información