การดำเนินการพื้นฐานของแอปพลิเคชัน

ฟังก์ชันที่เกี่ยวข้องกับการดำเนินการของแอปพลิเคชันช่วยให้คุณสามารถเปิดและปิดแอปพลิเคชัน, ให้หรือเพิกถอนสิทธิ์, ปิดหรือเปิดใช้งานแอปพลิเคชัน และเล่นซ้ำกิจกรรมของระบบ (Activity) ใดๆ รวมถึง Activity ที่ไม่ได้ export ออกมาได้อย่างสะดวก

แสดงรายการแอปพลิเคชันที่ติดตั้ง

เรียกดู Package ID ของแอปพลิเคชันทั้งหมดที่ติดตั้งบนอุปกรณ์

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']

แสดงรายการแอปพลิเคชันที่กำลังทำงาน

เรียกดูข้อมูลเกี่ยวกับแอปพลิเคชันที่กำลังทำงานอยู่ในระบบ

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

เรียกแอปพลิเคชันผ่านชื่อ

ใช้ชื่อสามัญของแอปพลิเคชันเพื่อเรียกอินสแตนซ์ของแอปพลิเคชัน (ในกรณีที่ไม่ทราบ Package ID)

# เพิ่มเข้ามาในเวอร์ชัน 7.75
app = d.get_application_by_name("微信")

เรียกแอปพลิเคชันผ่านชื่อแพ็คเกจ

ใช้ Package ID ของแอปพลิเคชันเพื่อเรียกอินสแตนซ์ของแอปพลิเคชัน

app = d.application("com.tencent.mm")

เรียกแอปพลิเคชันที่ทำงานอยู่เบื้องหน้า

เรียกอินสแตนซ์ของแอปพลิเคชันที่กำลังทำงานอยู่เบื้องหน้าในปัจจุบัน

app = d.current_application()

เรียกแอปพลิเคชันโคลน

เรียกอินสแตนซ์ของแอปพลิเคชันโคลน (โดยปกติแล้ว แอปพลิเคชันโคลนจะถูกแยกแยะโดยใช้ user และมี UID เป็น 999)

app = d.application("com.my.app", user=999)

เปิดแอปพลิเคชัน

คุณสามารถเรียกใช้ฟังก์ชันนี้เพื่อเปิดแอปพลิเคชัน

app.start()

ปิดแอปพลิเคชัน

คุณสามารถเรียกใช้ฟังก์ชันนี้เพื่อบังคับปิดแอปพลิเคชันนี้

app.stop()

ตรวจสอบการทำงานเบื้องหน้า

คุณสามารถเรียกใช้ฟังก์ชันนี้เพื่อตรวจสอบว่าแอปพลิเคชันกำลังทำงานอยู่เบื้องหน้าหรือไม่

app.is_foreground()

เรียกข้อมูลแอปพลิเคชัน

คุณสามารถเรียกใช้ฟังก์ชันนี้เพื่อรับข้อมูลที่เกี่ยวข้องกับแอปพลิเคชัน เช่น เวอร์ชัน เป็นต้น

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'

ตรวจสอบว่าติดตั้งแล้วหรือไม่

คุณสามารถเรียกใช้ฟังก์ชันนี้เพื่อตรวจสอบว่าแอปพลิเคชันนี้ได้ถูกติดตั้งบนอุปกรณ์แล้วหรือไม่

app.is_installed()

ถอนการติดตั้งแอปพลิเคชัน

คุณสามารถเรียกใช้ฟังก์ชันนี้เพื่อถอนการติดตั้งแอปพลิเคชันออกจากอุปกรณ์

app.uninstall()

เรียก Activity ล่าสุด

คุณสามารถเรียกใช้ฟังก์ชันต่อไปนี้เพื่อรับ 5 Activity ล่าสุดในระบบ (สูงสุด 12 รายการ) และคุณยังสามารถเล่นซ้ำ Activity ใดๆ ได้โดยตรง

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}}]

เริ่มการทำงานของ Activity

คุณสามารถเล่นซ้ำ Activity ระดับระบบ และสามารถเรียก Activity ใดๆ ของแอปพลิเคชันใดๆ ก็ได้ พารามิเตอร์ที่ใช้ได้มีดังต่อไปนี้ โปรดทราบว่าข้อมูลเพิ่มเติม (extras) รองรับเฉพาะประเภท boolean, int, short, long, double, float และ string เท่านั้น สำหรับคำนิยามของพารามิเตอร์ flags โปรดอ้างอิงจากเอกสาร 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)

ตอนนี้เราจะใช้ผลลัพธ์จากฟังก์ชัน เรียก Activity ล่าสุด เป็นตัวอย่าง คุณสามารถเล่นซ้ำ Activity ล่าสุดของระบบได้โดยตรงผ่านโค้ดต่อไปนี้

activity = d.get_last_activities(count=5)[-1]
d.start_activity(**activity)

หากคุณต้องการเรียก Activity ในแอปพลิเคชันโคลน โค้ดต่อไปนี้จะเล่นซ้ำ Activity ไปยังแอปพลิเคชันโคลน

d.start_activity(**activity, user=999)

ด้านล่างนี้คือตัวอย่างบางส่วนเพื่อให้คุณอ้างอิง การเรียกใช้โค้ดต่อไปนี้จะทำการโทรออกไปยังเบอร์ศูนย์บริการลูกค้า 10000

d.start_activity(action="android.intent.action.CALL", data="tel:10000")

การเรียกใช้โค้ดต่อไปนี้จะเปิดแอปพลิเคชัน Settings ให้คุณ ซึ่งเกือบจะเทียบเท่ากับการเปิดแอปพลิเคชันโดยตรง

d.start_activity(action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER", component="com.android.settings/.Settings")

การเรียกใช้โค้ดต่อไปนี้จะเปิดแอปพลิเคชัน Settings ในโหมดดีบัก (debug mode) หากคุณเคยเห็นข้อความ Waitting for debugger ฟังก์ชันนี้อาจเป็นประโยชน์สำหรับคุณ แน่นอนว่าอุปกรณ์หรือแอปพลิเคชันของคุณจะต้องสามารถดีบักได้ ความแตกต่างจากการเรียกใช้ก่อนหน้านี้มีเพียงแค่การเพิ่มพารามิเตอร์ debug เข้าไป

d.start_activity(action="android.intent.action.MAIN", category="android.intent.category.LAUNCHER", component="com.android.settings/.Settings", debug=True)

การเรียกใช้โค้ดต่อไปนี้จะนำคุณไปยังหน้าการตั้งค่าใบรับรองโดยตรง

d.start_activity(action="com.android.settings.TRUSTED_CREDENTIALS")

แสดงรายการสิทธิ์ของแอปพลิเคชัน

ฟังก์ชันนี้สามารถแสดงรายการชื่อสิทธิ์ทั้งหมดที่แอปพลิเคชันร้องขอ

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']

ให้สิทธิ์แก่แอปพลิเคชัน

ฟังก์ชันนี้ใช้สำหรับให้สิทธิ์ของระบบแก่แอปพลิเคชัน คุณควรใช้ฟังก์ชันนี้เพื่อตั้งค่าสิทธิ์ก่อนที่แอปพลิเคชันจะเริ่มทำงาน การใช้ฟังก์ชันนี้ในขณะที่แอปพลิเคชันกำลังร้องขอสิทธิ์อยู่ จะไม่มีผลเหมือนกับการที่คุณกดปุ่มอนุญาต

from lamda.const import *
app.grant(PERMISSION_READ_PHONE_STATE, mode=GrantType.GRANT_ALLOW)

สำหรับพารามิเตอร์ mode ของเมธอด grant ยังรองรับ GrantType.GRANT_DENY ซึ่งหมายถึงการปฏิเสธสิทธิ์นั้นอย่างชัดเจน และ GrantType.GRANT_IGNORE ซึ่งมีความหมายพิเศษกว่า โดยจะหมายถึงการให้สิทธิ์แก่แอปพลิเคชัน แต่ในทางปฏิบัติแอปพลิเคชันจะไม่สามารถใช้สิทธิ์นั้นได้ตามปกติ ตัวอย่างเช่น หากแอปพลิเคชันร้องขอการเข้าถึงกล้อง การใช้พารามิเตอร์นี้เพื่อปฏิเสธอาจทำให้กล้องของแอปพลิเคชันแสดงหน้าจอสีดำ

เพิกถอนสิทธิ์ของแอปพลิเคชัน

การเรียกใช้ฟังก์ชันนี้สามารถเพิกถอนสิทธิ์ที่เคยให้กับแอปพลิเคชันได้ และเช่นเดียวกัน คุณควรเรียกใช้ฟังก์ชันนี้ก่อนที่แอปพลิเคชันจะเริ่มทำงาน

from lamda.const import *
app.revoke(PERMISSION_READ_PHONE_STATE)

ตรวจสอบว่าได้รับสิทธิ์หรือไม่

ฟังก์ชันนี้ใช้สำหรับตรวจสอบว่าสิทธิ์บางอย่างได้ถูกมอบให้กับแอปพลิเคชันอย่างถูกต้องแล้วหรือไม่

from lamda.const import *
app.is_permission_granted(PERMISSION_READ_PHONE_STATE)

ล้างแคชของแอปพลิเคชัน

ฟังก์ชันนี้ใช้สำหรับล้างข้อมูลแคชของแอปพลิเคชัน ซึ่งโดยปกติแล้วจะไม่ส่งผลกระทบต่อการทำงานของแอปพลิเคชัน

app.clear_cache()

ล้างข้อมูลของแอปพลิเคชัน

ฟังก์ชันนี้ใช้สำหรับล้างข้อมูลของแอปพลิเคชัน โปรดทราบว่าการดำเนินการนี้จะลบข้อมูลทั้งหมดของแอปพลิเคชัน ทำให้ข้อมูลต่างๆ เช่น บัญชีผู้ใช้ จะสูญหายไป

app.reset()

เรียก Activity เริ่มต้น

คุณสามารถใช้ฟังก์ชันนี้เพื่อสอบถาม Activity เริ่มต้น (launch Activity) ของแอปพลิเคชันได้

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.enable()

ปิดใช้งานแอปพลิเคชัน

ฟังก์ชันนี้ใช้สำหรับปิดใช้งานแอปพลิเคชัน แอปพลิเคชันที่ถูกปิดใช้งานจะไม่ปรากฏในรายการแอปพลิเคชัน และคุณจะไม่สามารถใช้งานได้จนกว่าจะเปิดใช้งานอีกครั้ง ฟังก์ชันนี้ช่วยให้คุณสามารถหยุดการทำงานของแอปพลิเคชันชั่วคราวหรือถาวรได้ แอปพลิเคชันนั้นจะไม่สามารถเริ่มทำงานอัตโนมัติได้ ในกรณีที่อุปกรณ์ของคุณมีการติดตั้งแอปพลิเคชันจำนวนมาก คุณสามารถปิดใช้งานแอปพลิเคชันที่ไม่จำเป็นต้องใช้ชั่วคราวเพื่อลดการใช้ทรัพยากรของระบบ

app.disable()