Loading libs/binder/ActivityManager.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #include <mutex> #include <unistd.h> #include <android/app/IProcessObserver.h> #include <android/app/RunningAppProcessInfo.h> #include <android/permission_manager.h> #include <binder/ActivityManager.h> #include <binder/Binder.h> Loading Loading @@ -160,6 +162,31 @@ status_t ActivityManager::checkPermission(const String16& permission, return DEAD_OBJECT; } status_t ActivityManager::registerProcessObserver(const sp<app::IProcessObserver> observer) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->registerProcessObserver(observer); } return INVALID_OPERATION; } status_t ActivityManager::unregisterProcessObserver(const sp<app::IProcessObserver> observer) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->unregisterProcessObserver(observer); } return INVALID_OPERATION; } status_t ActivityManager::getRunningAppProcesses( ::std::vector<app::RunningAppProcessInfo>* output) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->getRunningAppProcesses(output); } return INVALID_OPERATION; } status_t ActivityManager::linkToDeath(const sp<IBinder::DeathRecipient>& recipient) { sp<IActivityManager> service = getService(); if (service != nullptr) { Loading libs/binder/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -971,6 +971,8 @@ cc_library { "IActivityManager.cpp", "IUidObserver.cpp", ":activity_manager_procstate_aidl", ":activity_manager_iprocessobserver_aidl", ":activity_manager_runningappprocessinfo_aidl", ], export_include_dirs: ["include_activitymanager"], shared_libs: [ Loading libs/binder/IActivityManager.cpp +37 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #include <unistd.h> #include <fcntl.h> #include <android/app/IProcessObserver.h> #include <android/app/RunningAppProcessInfo.h> #include <android/permission_manager.h> #include <binder/ActivityManager.h> #include <binder/IActivityManager.h> Loading Loading @@ -232,6 +234,41 @@ public: } return NO_ERROR; } virtual status_t registerProcessObserver(const sp<app::IProcessObserver>& observer) { Parcel data; Parcel reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); data.writeStrongBinder(observer); status_t err = remote()->transact(REGISTER_PROCESS_OBSERVER, data, &reply, 0); if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { return err; } return OK; } virtual status_t unregisterProcessObserver(const sp<app::IProcessObserver>& observer) { Parcel data; Parcel reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); data.writeStrongBinder(observer); status_t err = remote()->transact(UNREGISTER_PROCESS_OBSERVER, data, &reply, 0); if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { return err; } return OK; } virtual status_t getRunningAppProcesses(::std::vector<app::RunningAppProcessInfo>* output) { Parcel data; Parcel reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); status_t err = remote()->transact(GET_RUNNING_APP_PROCESSES, data, &reply, 0); if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { return err; } return reply.readParcelableVector(output); } }; // ------------------------------------------------------------------------------------ Loading libs/binder/include_activitymanager/binder/ActivityManager.h +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,11 @@ // --------------------------------------------------------------------------- namespace android { namespace app { class IProcessObserver; class RunningAppProcessInfo; } // namespace app #define DECLARE_PROCESS_STATE(name) \ PROCESS_STATE_##name = (int32_t) app::ProcessStateEnum::name Loading Loading @@ -95,6 +100,10 @@ public: int getUidProcessState(const uid_t uid, const String16& callingPackage); status_t checkPermission(const String16& permission, const pid_t pid, const uid_t uid, int32_t* outResult); status_t registerProcessObserver(const sp<app::IProcessObserver> observer); status_t unregisterProcessObserver(const sp<app::IProcessObserver> observer); status_t getRunningAppProcesses(::std::vector<app::RunningAppProcessInfo>* output); status_t linkToDeath(const sp<IBinder::DeathRecipient>& recipient); status_t unlinkToDeath(const sp<IBinder::DeathRecipient>& recipient); Loading libs/binder/include_activitymanager/binder/IActivityManager.h +16 −2 Original line number Diff line number Diff line Loading @@ -18,11 +18,19 @@ #ifndef __ANDROID_VNDK__ #include <binder/IUidObserver.h> #include <binder/IInterface.h> #include <binder/IUidObserver.h> #include <binder/Parcelable.h> #include <vector> namespace android { namespace app { class IProcessObserver; class RunningAppProcessInfo; } // namespace app // ------------------------------------------------------------------------------------ class IActivityManager : public IInterface Loading Loading @@ -55,6 +63,9 @@ public: virtual status_t logFgsApiEnd(int32_t apiType, int32_t appUid, int32_t appPid) = 0; virtual status_t logFgsApiStateChanged(int32_t apiType, int32_t state, int32_t appUid, int32_t appPid) = 0; virtual status_t registerProcessObserver(const sp<app::IProcessObserver>& observer) = 0; virtual status_t unregisterProcessObserver(const sp<app::IProcessObserver>& observer) = 0; virtual status_t getRunningAppProcesses(::std::vector<app::RunningAppProcessInfo>* output) = 0; enum { OPEN_CONTENT_URI_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, Loading @@ -68,7 +79,10 @@ public: CHECK_PERMISSION_TRANSACTION, LOG_FGS_API_BEGIN_TRANSACTION, LOG_FGS_API_END_TRANSACTION, LOG_FGS_API_STATE_CHANGED_TRANSACTION LOG_FGS_API_STATE_CHANGED_TRANSACTION, REGISTER_PROCESS_OBSERVER, UNREGISTER_PROCESS_OBSERVER, GET_RUNNING_APP_PROCESSES, }; }; Loading Loading
libs/binder/ActivityManager.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #include <mutex> #include <unistd.h> #include <android/app/IProcessObserver.h> #include <android/app/RunningAppProcessInfo.h> #include <android/permission_manager.h> #include <binder/ActivityManager.h> #include <binder/Binder.h> Loading Loading @@ -160,6 +162,31 @@ status_t ActivityManager::checkPermission(const String16& permission, return DEAD_OBJECT; } status_t ActivityManager::registerProcessObserver(const sp<app::IProcessObserver> observer) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->registerProcessObserver(observer); } return INVALID_OPERATION; } status_t ActivityManager::unregisterProcessObserver(const sp<app::IProcessObserver> observer) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->unregisterProcessObserver(observer); } return INVALID_OPERATION; } status_t ActivityManager::getRunningAppProcesses( ::std::vector<app::RunningAppProcessInfo>* output) { sp<IActivityManager> service = getService(); if (service != nullptr) { return service->getRunningAppProcesses(output); } return INVALID_OPERATION; } status_t ActivityManager::linkToDeath(const sp<IBinder::DeathRecipient>& recipient) { sp<IActivityManager> service = getService(); if (service != nullptr) { Loading
libs/binder/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -971,6 +971,8 @@ cc_library { "IActivityManager.cpp", "IUidObserver.cpp", ":activity_manager_procstate_aidl", ":activity_manager_iprocessobserver_aidl", ":activity_manager_runningappprocessinfo_aidl", ], export_include_dirs: ["include_activitymanager"], shared_libs: [ Loading
libs/binder/IActivityManager.cpp +37 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #include <unistd.h> #include <fcntl.h> #include <android/app/IProcessObserver.h> #include <android/app/RunningAppProcessInfo.h> #include <android/permission_manager.h> #include <binder/ActivityManager.h> #include <binder/IActivityManager.h> Loading Loading @@ -232,6 +234,41 @@ public: } return NO_ERROR; } virtual status_t registerProcessObserver(const sp<app::IProcessObserver>& observer) { Parcel data; Parcel reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); data.writeStrongBinder(observer); status_t err = remote()->transact(REGISTER_PROCESS_OBSERVER, data, &reply, 0); if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { return err; } return OK; } virtual status_t unregisterProcessObserver(const sp<app::IProcessObserver>& observer) { Parcel data; Parcel reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); data.writeStrongBinder(observer); status_t err = remote()->transact(UNREGISTER_PROCESS_OBSERVER, data, &reply, 0); if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { return err; } return OK; } virtual status_t getRunningAppProcesses(::std::vector<app::RunningAppProcessInfo>* output) { Parcel data; Parcel reply; data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); status_t err = remote()->transact(GET_RUNNING_APP_PROCESSES, data, &reply, 0); if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { return err; } return reply.readParcelableVector(output); } }; // ------------------------------------------------------------------------------------ Loading
libs/binder/include_activitymanager/binder/ActivityManager.h +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,11 @@ // --------------------------------------------------------------------------- namespace android { namespace app { class IProcessObserver; class RunningAppProcessInfo; } // namespace app #define DECLARE_PROCESS_STATE(name) \ PROCESS_STATE_##name = (int32_t) app::ProcessStateEnum::name Loading Loading @@ -95,6 +100,10 @@ public: int getUidProcessState(const uid_t uid, const String16& callingPackage); status_t checkPermission(const String16& permission, const pid_t pid, const uid_t uid, int32_t* outResult); status_t registerProcessObserver(const sp<app::IProcessObserver> observer); status_t unregisterProcessObserver(const sp<app::IProcessObserver> observer); status_t getRunningAppProcesses(::std::vector<app::RunningAppProcessInfo>* output); status_t linkToDeath(const sp<IBinder::DeathRecipient>& recipient); status_t unlinkToDeath(const sp<IBinder::DeathRecipient>& recipient); Loading
libs/binder/include_activitymanager/binder/IActivityManager.h +16 −2 Original line number Diff line number Diff line Loading @@ -18,11 +18,19 @@ #ifndef __ANDROID_VNDK__ #include <binder/IUidObserver.h> #include <binder/IInterface.h> #include <binder/IUidObserver.h> #include <binder/Parcelable.h> #include <vector> namespace android { namespace app { class IProcessObserver; class RunningAppProcessInfo; } // namespace app // ------------------------------------------------------------------------------------ class IActivityManager : public IInterface Loading Loading @@ -55,6 +63,9 @@ public: virtual status_t logFgsApiEnd(int32_t apiType, int32_t appUid, int32_t appPid) = 0; virtual status_t logFgsApiStateChanged(int32_t apiType, int32_t state, int32_t appUid, int32_t appPid) = 0; virtual status_t registerProcessObserver(const sp<app::IProcessObserver>& observer) = 0; virtual status_t unregisterProcessObserver(const sp<app::IProcessObserver>& observer) = 0; virtual status_t getRunningAppProcesses(::std::vector<app::RunningAppProcessInfo>* output) = 0; enum { OPEN_CONTENT_URI_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, Loading @@ -68,7 +79,10 @@ public: CHECK_PERMISSION_TRANSACTION, LOG_FGS_API_BEGIN_TRANSACTION, LOG_FGS_API_END_TRANSACTION, LOG_FGS_API_STATE_CHANGED_TRANSACTION LOG_FGS_API_STATE_CHANGED_TRANSACTION, REGISTER_PROCESS_OBSERVER, UNREGISTER_PROCESS_OBSERVER, GET_RUNNING_APP_PROCESSES, }; }; Loading