|     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:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

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

-- Tutorial de B4A --

Volver al índice del tutorial                    Return to index tutorial

____________________________

Basic4Android.

37.- Parar un programa desde otro programa que hemos realizado. KillProcess. Instalar/desinstalar desde código..

Tutoriales. Parar un programa desde otro programa que hemos realizado. KillProcess.

Presentación

- En el tutorial anterior vimos como podemos arrancar una aplicación externa desde la aplicación que hemos realizado.

- Ahora vamos a ver como podemos cerrar una aplicación externa desde nuestra aplicación. Para ello he adaptado un código que he visto en uno de los foros.


Para parar la Actividad actual utilizamos:

ExitApplication o Activity.Finish desde la misma Actividad.

otra manera es ir al shell en modo root y poner kill -p IDentificador

Una aplicación del Google Play para ver los procesos y controlarlos es Elixir.

 

_________________________
1.- Pero lo que realmente queremos es Terminar un proceso desde otro proceso.

En este caso vamos a obtener una lista de los procesos que se están ejecutando y tener la posibilidad de terminar con alguno.

Para ello vamos a instalar la Librería OSLibrary

Crearemos una nueva aplicación.

Entramos en el Designer y Añadimos un ListView1 y un Button1. Guardamos el Designer como: Layout

El ListView1 ocupa gran parte de la pantalla y el Button1 tiene el texto: "Recargar la lista de procesos".

Y copiamos y pegamos este código...

Listar las aplicaciones en funcionamiento y Elegir una para Terminarla
'Activity module
Sub Process_Globals
    ' Juan Antonio Villalpando
    ' juana1991@yahoo.com

End Sub

Sub Globals

    Dim Button1 As Button
    Dim ListView1 As ListView  
    
    Dim lstname,lstpid, lstnamepid, lstret As List
    Dim OS As OperatingSystem
    
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")

    OS.Initialize("OS")
     
    lstname.Initialize
    lstpid.Initialize
    lstnamepid.Initialize
    lstret=OS.RunningAppProcessInfo(lstname,lstpid,lstnamepid)
    
    For i = 0 To lstname.Size - 1
    ListView1.AddSingleLine(lstname.Get(i))
    
' Con estas líneas si estuviera abierto el Browser se terminaría automaticamente.
'       If lstname.Get(i) = "com.android.browser" Then
'            OS.killBackgroundProcesses(lstname.Get(i))
'            OS.killProcess(lstpid.Get(i))
'            Msgbox ("Kill process: " & lstname.Get(i),lstpid.Get(i))
'       End If
    Next

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
    
    OS.Initialize("OS")
     
    lstname.Initialize
    lstpid.Initialize
    lstnamepid.Initialize
    lstret=OS.RunningAppProcessInfo(lstname,lstpid,lstnamepid)
    ListView1.Clear
        
    For i = 0 To lstname.Size - 1
    ListView1.AddSingleLine(lstname.Get(i)) 
    Next
    
' Esto termina con esta misma aplicación    
' OS.killProcess(OS.myPid)

End Sub
Sub ListView1_ItemClick (Position As Int, Value As Object)
    Msgbox ("Va a terminar el proceso: " & lstname.Get(Position),"PID = " & lstpid.Get(Position))
    OS.killBackgroundProcesses(lstname.Get(Position))
    OS.killProcess(lstpid.Get(Position))    
End Sub

El código es fácil de entender. Cuando arranca se carga el ListView1 con los procesos que se están ejecutando.
Se toma el nombre de cada proceso (lstname) y se introduce en las distintas filas del ListView1.
También se toma el PID (lstpid) de cada proceso y se introduce en una lista.

Si pulsamos sobre un elemento del ListVew1, se terminará ese proceso:

OS.killProcess(lstpid.Get(Position))

Si pulsamos el Button1, se recargarán los procesos actuales y el ListView1.

Si activamos estas estas líneas:

' Con estas líneas si estuviera abierto el Browser se terminaría automaticamente.
' If lstname.Get(i) = "com.android.browser" Then
' OS.killBackgroundProcesses(lstname.Get(i))
' OS.killProcess(lstpid.Get(i))
' Msgbox ("Kill process: " & lstname.Get(i),lstpid.Get(i))
' End If

Se podría terminar con un proceso, en este caso el Browser, automáticamente cuando cargara nuestro programa.
_________________________

2.- Instalar / Desinstalar una aplicación desde código

Instalar

Dim applicacionapk as string
Dim i as intent

  TargetApk = File.DirRootExternal &  "/AppUpdate.apk"
  i.Initialize(i.ACTION_VIEW, applicacionapk)
  i.SetComponent("com.android.packageinstaller/.Paqueteainstalar")
  StartActivity(i)

Otra forma de instalar

Dim  i  As Intent

i.Initialize(i.ACTION_VIEW, "file:///sdcard/MyAPK.apk" )
i.SetType( "application/vnd.android.package-archive" )

StartActivity (i)

---------------------------------------------------

Desinstalar

Dim i As Intent
i.Initialize("android.intent.action.DELETE", "package:com.example.app")

StartActivity(i)

_________________________

Librería OSLibrary

Esta biblioteca es bastante potente, podemos actuar mediante ella en el Sistema Operativo.

Aquí pongo un enlace que vale la pena echarle un vistazo.

http://www.basic4ppc.com/android/help/oslibrary.html#operatingsystem_killprocess

________________________________

Si quieres que este tutorial se mantenga y lo actualice con más programas, escríbeme un correo a Juan Antonio: juana1991@yahoo.com

- 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