Loading libs/binder/ActivityManager.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,15 @@ int32_t ActivityManager::getUidProcessState(const uid_t uid, const String16& cal return PROCESS_STATE_UNKNOWN; } bool ActivityManager::isUidActiveOrForeground(const uid_t uid, const String16& callingPackage) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->isUidActiveOrForeground(uid, callingPackage); } return false; } status_t ActivityManager::linkToDeath(const sp<IBinder::DeathRecipient>& recipient) { sp<IActivityManager> service = getService(); if (service != nullptr) { Loading libs/binder/IActivityManager.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,18 @@ public: } return reply.readInt32(); } virtual bool isUidActiveOrForeground(const uid_t uid, const String16& callingPackage) { Parcel data, reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); data.writeInt32(uid); data.writeString16(callingPackage); remote()->transact(IS_UID_ACTIVE_OR_FOREGROUND_TRANSACTION, data, &reply); // fail on exception if (reply.readExceptionCode() != 0) return false; return reply.readInt32() == 1; } }; // ------------------------------------------------------------------------------------ Loading libs/binder/include/binder/ActivityManager.h +19 −19 Original line number Diff line number Diff line Loading @@ -46,25 +46,24 @@ public: PROCESS_STATE_PERSISTENT = 0, PROCESS_STATE_PERSISTENT_UI = 1, PROCESS_STATE_TOP = 2, PROCESS_STATE_FOREGROUND_SERVICE_LOCATION = 3, PROCESS_STATE_BOUND_TOP = 4, PROCESS_STATE_FOREGROUND_SERVICE = 5, PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 6, PROCESS_STATE_IMPORTANT_FOREGROUND = 7, PROCESS_STATE_IMPORTANT_BACKGROUND = 8, PROCESS_STATE_TRANSIENT_BACKGROUND = 9, PROCESS_STATE_BACKUP = 10, PROCESS_STATE_SERVICE = 11, PROCESS_STATE_RECEIVER = 12, PROCESS_STATE_TOP_SLEEPING = 13, PROCESS_STATE_HEAVY_WEIGHT = 14, PROCESS_STATE_HOME = 15, PROCESS_STATE_LAST_ACTIVITY = 16, PROCESS_STATE_CACHED_ACTIVITY = 17, PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 18, PROCESS_STATE_CACHED_RECENT = 19, PROCESS_STATE_CACHED_EMPTY = 20, PROCESS_STATE_NONEXISTENT = 21, PROCESS_STATE_BOUND_TOP = 3, PROCESS_STATE_FOREGROUND_SERVICE = 4, PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 5, PROCESS_STATE_IMPORTANT_FOREGROUND = 6, PROCESS_STATE_IMPORTANT_BACKGROUND = 7, PROCESS_STATE_TRANSIENT_BACKGROUND = 8, PROCESS_STATE_BACKUP = 9, PROCESS_STATE_SERVICE = 10, PROCESS_STATE_RECEIVER = 11, PROCESS_STATE_TOP_SLEEPING = 12, PROCESS_STATE_HEAVY_WEIGHT = 13, PROCESS_STATE_HOME = 14, PROCESS_STATE_LAST_ACTIVITY = 15, PROCESS_STATE_CACHED_ACTIVITY = 16, PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 17, PROCESS_STATE_CACHED_RECENT = 18, PROCESS_STATE_CACHED_EMPTY = 19, PROCESS_STATE_NONEXISTENT = 20, }; ActivityManager(); Loading @@ -77,6 +76,7 @@ public: void unregisterUidObserver(const sp<IUidObserver>& observer); bool isUidActive(const uid_t uid, const String16& callingPackage); int getUidProcessState(const uid_t uid, const String16& callingPackage); bool isUidActiveOrForeground(const uid_t uid, const String16& callingPackage); status_t linkToDeath(const sp<IBinder::DeathRecipient>& recipient); Loading libs/binder/include/binder/IActivityManager.h +3 −1 Original line number Diff line number Diff line Loading @@ -39,13 +39,15 @@ public: virtual void unregisterUidObserver(const sp<IUidObserver>& observer) = 0; virtual bool isUidActive(const uid_t uid, const String16& callingPackage) = 0; virtual int32_t getUidProcessState(const uid_t uid, const String16& callingPackage) = 0; virtual bool isUidActiveOrForeground(const uid_t uid, const String16& callingPackage) = 0; enum { OPEN_CONTENT_URI_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, REGISTER_UID_OBSERVER_TRANSACTION, UNREGISTER_UID_OBSERVER_TRANSACTION, IS_UID_ACTIVE_TRANSACTION, GET_UID_PROCESS_STATE_TRANSACTION GET_UID_PROCESS_STATE_TRANSACTION, IS_UID_ACTIVE_OR_FOREGROUND_TRANSACTION, }; }; Loading Loading
libs/binder/ActivityManager.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,15 @@ int32_t ActivityManager::getUidProcessState(const uid_t uid, const String16& cal return PROCESS_STATE_UNKNOWN; } bool ActivityManager::isUidActiveOrForeground(const uid_t uid, const String16& callingPackage) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->isUidActiveOrForeground(uid, callingPackage); } return false; } status_t ActivityManager::linkToDeath(const sp<IBinder::DeathRecipient>& recipient) { sp<IActivityManager> service = getService(); if (service != nullptr) { Loading
libs/binder/IActivityManager.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,18 @@ public: } return reply.readInt32(); } virtual bool isUidActiveOrForeground(const uid_t uid, const String16& callingPackage) { Parcel data, reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); data.writeInt32(uid); data.writeString16(callingPackage); remote()->transact(IS_UID_ACTIVE_OR_FOREGROUND_TRANSACTION, data, &reply); // fail on exception if (reply.readExceptionCode() != 0) return false; return reply.readInt32() == 1; } }; // ------------------------------------------------------------------------------------ Loading
libs/binder/include/binder/ActivityManager.h +19 −19 Original line number Diff line number Diff line Loading @@ -46,25 +46,24 @@ public: PROCESS_STATE_PERSISTENT = 0, PROCESS_STATE_PERSISTENT_UI = 1, PROCESS_STATE_TOP = 2, PROCESS_STATE_FOREGROUND_SERVICE_LOCATION = 3, PROCESS_STATE_BOUND_TOP = 4, PROCESS_STATE_FOREGROUND_SERVICE = 5, PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 6, PROCESS_STATE_IMPORTANT_FOREGROUND = 7, PROCESS_STATE_IMPORTANT_BACKGROUND = 8, PROCESS_STATE_TRANSIENT_BACKGROUND = 9, PROCESS_STATE_BACKUP = 10, PROCESS_STATE_SERVICE = 11, PROCESS_STATE_RECEIVER = 12, PROCESS_STATE_TOP_SLEEPING = 13, PROCESS_STATE_HEAVY_WEIGHT = 14, PROCESS_STATE_HOME = 15, PROCESS_STATE_LAST_ACTIVITY = 16, PROCESS_STATE_CACHED_ACTIVITY = 17, PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 18, PROCESS_STATE_CACHED_RECENT = 19, PROCESS_STATE_CACHED_EMPTY = 20, PROCESS_STATE_NONEXISTENT = 21, PROCESS_STATE_BOUND_TOP = 3, PROCESS_STATE_FOREGROUND_SERVICE = 4, PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 5, PROCESS_STATE_IMPORTANT_FOREGROUND = 6, PROCESS_STATE_IMPORTANT_BACKGROUND = 7, PROCESS_STATE_TRANSIENT_BACKGROUND = 8, PROCESS_STATE_BACKUP = 9, PROCESS_STATE_SERVICE = 10, PROCESS_STATE_RECEIVER = 11, PROCESS_STATE_TOP_SLEEPING = 12, PROCESS_STATE_HEAVY_WEIGHT = 13, PROCESS_STATE_HOME = 14, PROCESS_STATE_LAST_ACTIVITY = 15, PROCESS_STATE_CACHED_ACTIVITY = 16, PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 17, PROCESS_STATE_CACHED_RECENT = 18, PROCESS_STATE_CACHED_EMPTY = 19, PROCESS_STATE_NONEXISTENT = 20, }; ActivityManager(); Loading @@ -77,6 +76,7 @@ public: void unregisterUidObserver(const sp<IUidObserver>& observer); bool isUidActive(const uid_t uid, const String16& callingPackage); int getUidProcessState(const uid_t uid, const String16& callingPackage); bool isUidActiveOrForeground(const uid_t uid, const String16& callingPackage); status_t linkToDeath(const sp<IBinder::DeathRecipient>& recipient); Loading
libs/binder/include/binder/IActivityManager.h +3 −1 Original line number Diff line number Diff line Loading @@ -39,13 +39,15 @@ public: virtual void unregisterUidObserver(const sp<IUidObserver>& observer) = 0; virtual bool isUidActive(const uid_t uid, const String16& callingPackage) = 0; virtual int32_t getUidProcessState(const uid_t uid, const String16& callingPackage) = 0; virtual bool isUidActiveOrForeground(const uid_t uid, const String16& callingPackage) = 0; enum { OPEN_CONTENT_URI_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, REGISTER_UID_OBSERVER_TRANSACTION, UNREGISTER_UID_OBSERVER_TRANSACTION, IS_UID_ACTIVE_TRANSACTION, GET_UID_PROCESS_STATE_TRANSACTION GET_UID_PROCESS_STATE_TRANSACTION, IS_UID_ACTIVE_OR_FOREGROUND_TRANSACTION, }; }; Loading