Grundlegende App-Operationen¶
Die APIs für App-Operationen ermöglichen es Ihnen, Apps bequem zu starten und zu schließen, App-Berechtigungen zu erteilen oder zu entziehen, Apps zu deaktivieren oder zu aktivieren und beliebige System-Aktivitäten (Activities) wiederzugeben, einschließlich beliebiger nicht exportierter Activities.
Installierte Apps auflisten¶
Ruft die Paket-IDs aller auf dem Gerät installierten Apps ab.
d.enumerate_all_pkg_names()
>>> d.enumerate_all_pkg_names()
['com.android.calendar', 'com.android.camera2', 'com.android.contacts', 'com.android.deskclock', 'com.android.dialer', 'com.android.gallery3d', 'com.android.messaging', 'com.android.settings', 'com.android.vending', 'com.android.documentsui', 'com.android.quicksearchbox', 'com.google.android.googlequicksearchbox']
Laufende Apps auflisten¶
Ruft Informationen über die aktuell auf dem System laufenden Apps ab.
d.enumerate_running_processes()
>>> d.enumerate_running_processes()
[packages: "com.android.launcher3"
processName: "com.android.launcher3"
uid: 10101
pid: 2333
, packages: "com.google.android.gms"
processName: "com.google.android.gms.persistent"
uid: 10075
pid: 2702
...
>>> result = d.enumerate_running_processes()
>>> print (result[0].processName)
com.android.launcher3
App nach Namen abrufen¶
Verwenden Sie den gebräuchlichen Namen einer App, um eine App-Instanz zu erhalten (wenn die Paket-ID unbekannt ist).
# Eingeführt in Version 7.75
app = d.get_application_by_name("WeChat")
App nach Paketnamen abrufen¶
Verwenden Sie die Paket-ID einer App, um eine App-Instanz zu erhalten.
app = d.application("com.tencent.mm")
App im Vordergrund abrufen¶
Ruft die Instanz der App ab, die sich aktuell im Vordergrund befindet.
app = d.current_application()
Geklonte App abrufen¶
Ruft die Instanz einer geklonten App ab (normalerweise werden geklonte Apps durch den Benutzer unterschieden und haben die UID 999).
app = d.application("com.my.app", user=999)
App starten¶
Sie können diese API aufrufen, um die App zu starten.
app.start()
App schließen¶
Sie können diese API aufrufen, um das Schließen der App zu erzwingen.
app.stop()
Auf Vordergrundbetrieb prüfen¶
Sie können diese API aufrufen, um zu überprüfen, ob die App aktuell im Vordergrund läuft.
app.is_foreground()
App-Informationen abrufen¶
Sie können diese API aufrufen, um relevante Informationen über die App, wie z.B. die Version, abzurufen.
app.info()
>>> app.info()
packageName: "com.android.settings"
uid: 1000
enabled: true
processName: "com.android.settings"
sourceDir: "/system/product/priv-app/Settings/Settings.apk"
dataDir: "/data/user_de/0/com.android.settings"
firstInstallTime: 1230739200000
lastUpdateTime: 1230768000000
versionCode: 1276
versionName: "10"
>>> result = app.info()
>>> print (result.processName)
'com.android.settings'
Auf Installation prüfen¶
Sie können diese API aufrufen, um zu überprüfen, ob diese App auf dem Gerät installiert ist.
app.is_installed()
App deinstallieren¶
Sie können diese API aufrufen, um die App vom Gerät zu deinstallieren.
app.uninstall()
Letzte Activities abrufen¶
Sie können die folgende API aufrufen, um die letzten 5 Activities im System abzurufen (maximal 12). Sie können auch jede beliebige Activity direkt wiedergeben.
activities = d.get_last_activities(count=5)
>>> d.get_last_activities(count=5)
[{'action': 'android.intent.action.MAIN', 'category': 'android.intent.category.HOME', 'component': 'net.oneplus.launcher/.Launcher', 'extras': {'android.intent.extra.FROM_HOME_KEY': True}}, {'action': 'android.intent.action.MAIN', 'category': 'android.intent.category.HOME', 'component': 'net.oneplus.launcher/.Launcher', 'extras': {'android.intent.extra.FROM_HOME_KEY': True}}, {'action': 'android.intent.action.MAIN', 'category': 'android.intent.category.HOME', 'component': 'net.oneplus.launcher/.Launcher', 'extras': {'android.intent.extra.FROM_HOME_KEY': True}}, {'action': 'android.intent.action.MAIN', 'category': 'android.intent.category.HOME', 'component': 'net.oneplus.launcher/.Launcher', 'extras': {'android.intent.extra.FROM_HOME_KEY': True}}, {'action': 'android.intent.action.MAIN', 'category': 'android.intent.category.HOME', 'component': 'net.oneplus.launcher/.Launcher', 'extras': {'android.intent.extra.FROM_HOME_KEY': True}}]
App-Activity starten¶
Sie können systemweite Activities wiedergeben und jede Activity jeder beliebigen App aufrufen. Die verfügbaren Parameter sind wie folgt. Beachten Sie, dass die zusätzlichen Daten (extras) nur die Typen boolean, int, short, long, double, float und string unterstützen.
Die Definition des flags-Parameters finden Sie in der Dokumentation unter developer.android.com/reference/android/content/Intent.
from lamda.const import *
d.start_activity(action="*", category="*", component="*", extras={"boolean": False, "int": 1, "string": "abc", "float": 1.123}, flags=FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_CLEAR_TASK, data="*", debug=False)
Nehmen wir nun die Rückgabe der Letzte Activities abrufen-API als Beispiel. Sie können die letzte System-Activity direkt mit dem folgenden Code wiedergeben.
activity = d.get_last_activities(count=5)[-1]
d.start_activity(**activity)
Wenn Sie eine Activity in einer geklonten App aufrufen möchten, wird der folgende Code die Activity in der geklonten App wiedergeben.
d.start_activity(**activity, user=999)
Hier sind einige Beispiele als Referenz. Der folgende Aufruf wählt die Kundendienst-Telefonnummer 10000.
d.start_activity(action="android.intent.action.CALL", data="tel:10000")
Der folgende Aufruf startet die Einstellungs-App für Sie, was fast dem direkten Starten der App entspricht.
d.start_activity(action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER", component="com.android.settings/.Settings")
Der folgende Aufruf öffnet die Einstellungs-App im Debug-Modus. Wenn Sie schon einmal Waiting for debugger gesehen haben, könnte dies für Sie nützlich sein. Natürlich muss Ihr Gerät oder Ihre App debugfähig sein. Der einzige Unterschied zum vorherigen Aufruf ist der zusätzliche debug-Parameter.
d.start_activity(action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER", component="com.android.settings/.Settings", debug=True)
Der folgende Aufruf führt Sie direkt zur Einstellungsseite für Zertifikate.
d.start_activity(action="com.android.settings.TRUSTED_CREDENTIALS")
App-Berechtigungen auflisten¶
Diese API kann die Namen aller von der App deklarierten Berechtigungen auflisten.
app.permissions()
>>> app.permissions( )
['android.permission.REQUEST_NETWORK_SCORES', 'android.permission.WRITE_MEDIA_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE', 'android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_SETTINGS', 'android.permission.WRITE_SECURE_SETTINGS', 'android.permission.DEVICE_POWER', 'android.permission.CHANGE_CONFIGURATION', 'android.permission.MOUNT_UNMOUNT_FILESYSTEMS', 'android.permission.VIBRATE', 'android.permission.BLUETOOTH', 'android.permission.BLUETOOTH_ADMIN', 'android.permission.BLUETOOTH_PRIVILEGED', 'android.permission.ACCESS_COARSE_LOCATION', 'android.permission.NFC', 'android.permission.HARDWARE_TEST', 'android.permission.CALL_PHONE', 'android.permission.MODIFY_AUDIO_SETTINGS', 'android.permission.MASTER_CLEAR', 'com.google.android.googleapps.permission.GOOGLE_AUTH', 'android.permission.ACCESS_DOWNLOAD_MANAGER', 'android.permission.READ_CONTACTS', 'android.permission.WRITE_CONTACTS', 'android.permission.ACCESS_NETWORK_STATE', 'android.permission.LOCAL_MAC_ADDRESS', 'android.permission.ACCESS_WIMAX_STATE', 'android.permission.CHANGE_WIMAX_STATE', 'android.permission.ACCESS_WIFI_STATE', 'com.android.certinstaller.INSTALL_AS_USER', 'android.permission.CHANGE_WIFI_STATE', 'android.permission.TETHER_PRIVILEGED', 'android.permission.FOREGROUND_SERVICE', 'android.permission.INTERNET', 'android.permission.CLEAR_APP_USER_DATA', 'android.permission.READ_PHONE_STATE', 'android.permission.MODIFY_PHONE_STATE', 'android.permission.ACCESS_FINE_LOCATION', 'android.permission.WRITE_APN_SETTINGS', 'android.permission.ACCESS_CHECKIN_PROPERTIES', 'android.permission.READ_USER_DICTIONARY', 'android.permission.WRITE_USER_DICTIONARY', 'android.permission.FORCE_STOP_PACKAGES', 'android.permission.PACKAGE_USAGE_STATS', 'android.permission.BATTERY_STATS', 'com.android.launcher.permission.READ_SETTINGS', 'com.android.launcher.permission.WRITE_SETTINGS', 'android.permission.MOVE_PACKAGE', 'android.permission.USE_CREDENTIALS', 'android.permission.BACKUP', 'android.permission.READ_SYNC_STATS', 'android.permission.READ_SYNC_SETTINGS', 'android.permission.WRITE_SYNC_SETTINGS', 'android.permission.READ_DEVICE_CONFIG', 'android.permission.STATUS_BAR', 'android.permission.MANAGE_USB', 'android.permission.MANAGE_DEBUGGING', 'android.permission.SET_POINTER_SPEED', 'android.permission.SET_KEYBOARD_LAYOUT', 'android.permission.INTERACT_ACROSS_USERS_FULL', 'android.permission.COPY_PROTECTED_DATA', 'android.permission.MANAGE_USERS', 'android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS', 'android.permission.READ_PROFILE', 'android.permission.CONFIGURE_WIFI_DISPLAY', 'android.permission.CONFIGURE_DISPLAY_COLOR_MODE', 'android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS', 'android.permission.SET_TIME', 'android.permission.ACCESS_NOTIFICATIONS', 'android.permission.REBOOT', 'android.permission.RECEIVE_BOOT_COMPLETED', 'android.permission.MANAGE_DEVICE_ADMINS', 'android.permission.READ_SEARCH_INDEXABLES', 'android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE', 'android.permission.OEM_UNLOCK_STATE', 'android.permission.MANAGE_USER_OEM_UNLOCK_STATE', 'android.permission.OVERRIDE_WIFI_CONFIG', 'android.permission.USE_FINGERPRINT', 'android.permission.MANAGE_FINGERPRINT', 'android.permission.USE_BIOMETRIC', 'android.permission.USE_BIOMETRIC_INTERNAL', 'android.permission.USER_ACTIVITY', 'android.permission.CHANGE_APP_IDLE_STATE', 'android.permission.PEERS_MAC_ADDRESS', 'android.permission.MANAGE_NOTIFICATIONS', 'android.permission.DELETE_PACKAGES', 'android.permission.REQUEST_DELETE_PACKAGES', 'android.permission.MANAGE_APP_OPS_RESTRICTIONS', 'android.permission.MANAGE_APP_OPS_MODES', 'android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS', 'android.permission.READ_PRINT_SERVICES', 'android.permission.NETWORK_SETTINGS', 'android.permission.TEST_BLACKLISTED_PASSWORD', 'android.permission.USE_RESERVED_DISK', 'android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS', 'android.permission.CAMERA', 'android.permission.MEDIA_CONTENT_CONTROL', 'com.wapi.permission.ACCESS_CERTIFICATE', 'com.oneplus.faceunlock.permission.FACE_SETTING', 'android.permission.STATUS_BAR_SERVICE', 'android.permission.MODIFY_AUDIO_ROUTING', 'com.oneplus.account.READ_ACCOUNT_INFO', 'com.android.settings.SEND_PERMISSION']
App-Berechtigungen erteilen¶
Diese API wird verwendet, um der App entsprechende Systemberechtigungen zu erteilen. Sie sollten diese API verwenden, um Berechtigungen festzulegen, bevor die App gestartet wird. Die Verwendung während die App läuft und eine Berechtigung anfordert, hat nicht den Effekt, für Sie auf 'Zulassen' zu klicken.
from lamda.const import *
app.grant(PERMISSION_READ_PHONE_STATE, mode=GrantType.GRANT_ALLOW)
Der mode-Parameter der grant-Methode unterstützt auch GrantType.GRANT_DENY, was bedeutet, die Berechtigung explizit zu verweigern. Sowie GrantType.GRANT_IGNORE, dessen Bedeutung spezieller ist: Es erteilt der App die Berechtigung, aber die App kann diese Berechtigung tatsächlich nicht normal nutzen. Wenn eine App beispielsweise die Kamera anfordert und diese Berechtigung mit diesem Parameter verweigert wird, kann der Kamerabildschirm der App schwarz bleiben.
App-Berechtigungen entziehen¶
Der Aufruf dieser API kann einer App erteilte Berechtigungen entziehen. Sie sollten dies ebenfalls vor dem Start der App tun.
from lamda.const import *
app.revoke(PERMISSION_READ_PHONE_STATE)
Prüfen, ob erteilt¶
Diese API wird verwendet, um zu überprüfen, ob eine bestimmte Berechtigung der App ordnungsgemäß erteilt wurde.
from lamda.const import *
app.is_permission_granted(PERMISSION_READ_PHONE_STATE)
App-Cache leeren¶
Diese API wird verwendet, um die Cache-Daten der App zu leeren, was die App normalerweise nicht beeinträchtigt.
app.clear_cache()
App-Daten löschen¶
Diese API wird verwendet, um die Daten der App zu löschen. Beachten Sie, dass dieser Vorgang alle Daten der App löscht und Informationen wie Konten verloren gehen.
app.reset()
Start-Activity abrufen¶
Sie können diese API verwenden, um die Start-Activity (Einstiegs-Activity) der App abzufragen.
app.query_launch_activity()
>>> app.query_launch_activity()
{'action': 'android.intent.action.MAIN', 'component': 'com.android.settings/com.android.settings.Settings', 'categories': ['android.intent.category.LAUNCHER']}
App aktivieren¶
Diese API wird verwendet, um eine deaktivierte App zu aktivieren. Nach der Aktivierung können Sie die App wieder normal verwenden.
app.enable()
App deaktivieren¶
Diese API wird verwendet, um eine App zu deaktivieren. Eine deaktivierte App wird nicht in der App-Liste angezeigt und kann nicht verwendet werden, es sei denn, sie wird wieder aktiviert. Diese Funktion kann eine App vorübergehend oder dauerhaft einfrieren. Die App kann nicht von selbst starten. Wenn viele Apps auf dem Gerät installiert sind, können Sie vorübergehend nicht benötigte Apps deaktivieren, um die Nutzung von Systemressourcen zu reduzieren.
app.disable()