2010-02-16 5 views
1

어떻게 든 ActivityManager의 이벤트를 수신 할 수 있습니다. 활동이 시작되면? ActivityManager가 브로드 캐스트를 전송합니까? 나는 그것이하는 것을 나타내는 아무것도 발견하지 못했습니다.ActivityManager 이벤트를 수신 하시겠습니까?

기본적으로해야 할 일 : 특정 (제 3 자) 앱이 시작/집중 될 때마다 내 앱이 내 활동 중 하나를 시작하게하고 싶습니다. 세 번째 앱이 실제로 표시되기 전에 문제가 발생해야합니다.

  1. 로그 캣 출력 : 내가 해결 방법으로 지금까지 시도 무엇

    속도가 느려집니다 : 나는 모든이 0.8S (만 ActivityManager 이벤트를 표시하도록 필터링) 그러나 이것은 많은 능숙

  2. getRunningTasks까지 먹고는 로그 캣 쿼리 액티비티가 실행 중이지만 현재 포커스가 맞지 않아 매우 안전합니다.

아이디어가 있습니까? 내가 glabal 시스템 상태를 처리 할 사실은 다른 기존의 방법이 없다는 가정

+0

특정 타사 앱보다 먼저 앱을 실행해야하는 이유에 대해 의견을 말씀해 주시겠습니까? – dparnas

+0

사용자가 thirdparty 앱을 실행하기 전에 내 앱에서 비밀번호를 묻습니다. – ChristianS

답변

0

(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 

ActivityManager.getRecentTasks() - 가장 최근의 처음 인 상태, 현재 실행중인 작업의리스트를 돌려줍니다 그리고 오래된 것들은 순서대로.

안드로이드 당신이

Runtime.getRuntime().exec("ps -aux | grep smth") 

같은 시스템 도구를 실행할 수있는 리눅스입니다하지만 특정 자바 응용 프로그램을 감지 어려울 것이라고 생각하지만 세부 사항 docs

아마도 확인하십시오.

0

나는 안드로이드 소스를보고 있었지만, 어떤 이벤트도 방송되지는 않았다.

https://android.googlesource.com/platform/packages/providers/ApplicationsProvider

+0

Activitylauncher.java를 브로드 캐스팅하고 사용자 장치의 것으로 대체하는 방법으로 Activitylauncher.java를 업데이트 할 수 있다고 생각합니까 (루트 사용자 만 해당). 나는 이것이 ROM의 디지털 서명으로 인해 작동하지 않을 것으로 생각한다. – ChristianS

0

난 당신이 최상위 레벨로 시작하는 활동을 결정하기 위해 발사 모드를 사용할 수 있다고 생각합니다. 질문 : Android singleTask or singleInstance launch mode?을 확인하십시오. 어쩌면 그것은 당신을 도울 것입니다.