我希望当我在设备中启动任何应用程序时,它应通知我(以编程方式)。 是否有可能在运行(启动)时获取任何应用程序的通知。是否有可能在Android设备中启动任何应用程序时发出通知
5
A
回答
2
不,这不是真的可以使用公共SDK。
最好的情况是,您可以不断地继续轮询ActivityManager以查找顶级的前台进程,并保存日志。但是,这并不是最准确或有效的方法。
3
您可以通过ActivityManager#getRunningAppProcesses获取当前正在运行的进程。但是,当应用程序启动而不让设备植根时,通知绝对不可能。
当安卓开始一个新的应用程序,受精卵将一个新的进程:
static void Dalvik_dalvik_system_Zygote_forkAndSpecialize(const u4* args,
JValue* pResult)
{
pid_t pid;
pid = forkAndSpecializeCommon(args, false);
RETURN_INT(pid);
}
您可以修改和替换libdvm.so。
其动态链接将要访问的启动某些文件,如动态连接器的任何程序。这将是无用的,安全的目的,因为它不会在静态链接程序触发,但仍可能会感兴趣:
#include <stdio.h>
#include <sys/inotify.h>
#include <assert.h>
int main(int argc, char **argv) {
char buf[256];
struct inotify_event *event;
int fd, wd;
fd=inotify_init();
assert(fd > -1);
assert((wd=inotify_add_watch(fd, "/lib/ld-linux.so.2", IN_OPEN)) > 0);
printf("Watching for events, wd is %x\n", wd);
while (read(fd, buf, sizeof(buf))) {
event = (void *) buf;
printf("watch %d mask %x name(len %d)=\"%s\"\n",
event->wd, event->mask, event->len, event->name);
}
inotify_rm_watch(fd, wd);
return 0;
}
这需要root权限,所以用JNI和扎根设备,你就可以去做这个。
相关问题
- 1. 是否有可能知道应用程序是否在用户通过设置强制退出后启动?
- 2. 应用程序专用Android设备是否有可能?
- 3. 是否有可能在启动时运行AIR应用程序?
- 4. 在应用程序启动时触发Android通知
- 5. Android设备启动时重复通知
- 6. 是否有可能将开发的应用程序(xap)安装到任何设备的设备中
- 7. 是否有可能阻止任何应用程序在android
- 8. 是否有可能防止设备在重新启动时破坏我的Android应用程序?
- 9. EJB应用程序启动时是否发生任何事件?
- 10. Android:应用程序启动通知
- 11. 如何在启动设备时启动应用程序?
- 12. 如何检测是否有任何原生应用程序在Android中启动
- 13. 是否可以在Azure lightswitch应用程序中启动任务?
- 14. 设备上收到的GCM通知未启动应用程序
- 15. 离子应用程序开发是否有效?在Ionic Framework中是否有任何Android应用程序开发?
- 16. 确定设备是否可以启动Android电子市场应用程序
- 17. 如何在移动设备打开时在android中启动应用程序?
- 18. 如何知道是否为android中的应用程序启用通知?
- 19. Android:在任何Android设备上是否有通用的方式发送彩信?
- 20. 在设备上启动时调试android应用程序
- 21. 摇动设备以在Android中启动应用程序
- 22. 是否有可能在连接到mysql时在移动设备上测试Android应用程序
- 23. 启动器损坏时在移动设备上启动Android应用程序
- 24. 是否有可能在仿真设备上发现并运行第三方Android即时应用程序?
- 25. 是否有可能知道我的应用程序是从Windows 7中的任务栏启动的?
- 26. Windows KMDF驱动程序,通过通知通知变更应用程序是否有可能
- 27. 是否有可能在应用程序中有两个本地通知
- 28. 是否有可能使用C#开发Android应用程序?
- 29. 当在锁定的android或ios中收到后台通知时,是否可以启动应用程序?
- 30. [Android]应用程序重新启动设备后重新启动