我在檢查其他應用程序的進程名是否正在運行之前已經取得了一些成功,但是這隻會告訴我應用程序最近是否在某個點運行,並且即使屏幕當前處於關閉狀態也會返回true 。這次我真的想知道用戶是否在屏幕上有特定的應用程序並且正在使用它。有沒有辦法檢查用戶是否正在使用Android中的其他應用程序?
那可能嗎?謝謝!
我在檢查其他應用程序的進程名是否正在運行之前已經取得了一些成功,但是這隻會告訴我應用程序最近是否在某個點運行,並且即使屏幕當前處於關閉狀態也會返回true 。這次我真的想知道用戶是否在屏幕上有特定的應用程序並且正在使用它。有沒有辦法檢查用戶是否正在使用Android中的其他應用程序?
那可能嗎?謝謝!
看起來像所有你想做的事可以用ActivityManager類使用其嵌套類實現:
ActivityManager.RunningAppProcessInfo
ActivityManager.RunningServiceInfo
ActivityManager.RunningTaskInfo
ActivityManager.TaskDescription
你需要什麼要做的是創建一個分離te服務使用這些類監聽其他應用程序事件。我相信有一些方法「getRunningTasks()」,它返回所有正在運行的應用程序的列表,但我認爲它現在已被棄用,請搜索類似方法的鏈接。
不,至少不可靠。
谷歌一直表示,你不應該這樣做。就棒棒糖而言,他們正在積極嘗試阻止它。 ActivityManager#getRunningTasks(...)
在Android 5.0中進行了更改,因此它僅返回有關調用該應用的應用的信息。所以人們開始使用ActivityManager#getRunningAppProcesses(...)
,但是這在Android 5.1.1和6.0中同樣受到限制。
獲取有關其他正在運行的應用程序的信息的唯一方法是使用統計API。但是該API需要一個只能通過系統活動交互授予的權限,而不是在應用程序的清單中。並且文檔指出系統活動可能不在所有設備上。從其至少一些設備中刪除它的製造商包括三星和LG。
基本上,除了一些新的黑客的發現,第三方應用儲物櫃歷史的Android 6.
[確定從後臺任務或服務的當前前臺應用程序(HTTP的可能重複:// stackoverflow.com/questions/2166961/determining-the-current-foreground-application-from-a-background-task-or-service) –