app: Add app related features
This commit is contained in:
61
app.go
Normal file
61
app.go
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package goadb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Get the current focussed app package name
|
||||||
|
func (d *Device) GetCurrentAppPackage() (string, error) {
|
||||||
|
data, err := d.RunCommand("shell dumpsys activity activities | grep ResumedActivity")
|
||||||
|
re := regexp.MustCompile(`\b([a-zA-Z0-9._]+)/(?:[a-zA-Z0-9._]+)\b`)
|
||||||
|
matches := re.FindStringSubmatch(string(data))
|
||||||
|
|
||||||
|
if len(matches) > 1 {
|
||||||
|
return matches[1], nil
|
||||||
|
} else {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the pid for a app
|
||||||
|
func (d *Device) GetAppPid(appackage string) (int, error) {
|
||||||
|
data, err := d.RunCommand(fmt.Sprintf("shell pidof %s"))
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pid, err := strconv.Atoi(strings.TrimSpace(string(data)))
|
||||||
|
if err != nil {
|
||||||
|
return -1, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return pid, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if a app is running
|
||||||
|
func (d *Device) CheckAppRunning(appackage string) (bool, error) {
|
||||||
|
pid, err := d.GetAppPid(appackage)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
if pid != -1 {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start a app using the package name
|
||||||
|
func (d *Device) StartApp(appackage string) error {
|
||||||
|
_, err := d.RunCommand(fmt.Sprintf("shell monkey -p %s com.yourstoryinteractive.sails.pirate.adventure -c android.intent.category.LAUNCHER 1"))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force kill a running app
|
||||||
|
func (d *Device) KillApp(appackage string) error {
|
||||||
|
_, err := d.RunCommand(fmt.Sprintf("shell am force-stop %s"))
|
||||||
|
return err
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user