2013-04-16 2 views
11

시작 : 가지 내 질문에 대한 대답하지만 여전히 충분하지 Android, Detect when other apps are launchedReliable way to detect application launch from home/desktop?.나는이 질문에 대한 유래를 검색하고 발견

나는 내가 장치의 사용자가 최근에 사용한 앱의 목록과 가장 많이 사용되는 응용 프로그램의 목록을 보여줍니다 위젯/응용 프로그램을 만들려면 을 수행 할 작업.

문제 가장 많이 사용되는 앱 목록을 작성하려면 어떻게 앱에 대한 정확한 데이터를 얻을 수 있습니까?

자료 정보 난 내 자신의 안드로이드 OS (4.2 기준) 코드를 컴파일하고

  • 은 그래서 모두에 액세스 할 수 있습니다.
  • 저는 런처도 개발 중입니다.
  • CTS를 통과하고 Google이 승인해야합니다.
  • 시스템 권한으로 앱을 만들 수 있습니다.
  • 이것이 Google의 보안 문제 일 수 있음을 알고 있습니다.

일부 솔루션

최근 애플 리케이션

가 그래서 지금, ActityManager, getRecentApps 방법을 통해 문제를 찾을 수 있습니다.

나는 다음과 같은 솔루션은 이미 발견이를 위해 웹을 검색하고있다 :

  1. activityManager, getRunningTasks 방법 매 X 초를 조회도 많은의를 사용하여 목록 (정확하지 않고 정보를 구축하기 위해 서비스를 사용 batery).
  2. 이 정보를 얻을 수있는 로그 캣을 사용하여 (나에게 해킹처럼 보인다는 시스템 권한이 필요)
  3. 변경 activityManager 자체 정보 (가능성이 가장 높은 CTS 테스트를 실패합니다)
  4. 를 사용하여 실행 프로그램을 제공하기 위해 실행 된 앱을 확인하는 방법 (다른 앱에서 실행 된 앱을 놓치지 마세요)

그 밖의 다른 정보는 없었습니까? 사전에

덕분에, 티아고 코스타

+0

에게 당신을 꽤 4 가지 옵션 모두를 나열하는 데 많은 도움이되었습니다. 가장 좋아하는 사람은'(ActivityManager) this.getSystemService (ACTIVITY_SERVICE);를 사용하고 있습니다. – srf

+0

답변 해 주셔서 감사 드리며, 나는 그들 모두를 시험해보고 어떤 것이 가장 잘 작동하는지 살펴 보겠습니다. 다시 한번 감사드립니다. –

+0

logcat은 Android 4에서 작동하지 않습니다.2 권 이상인 경우 루트 권한이없는 경우 https://groups.google.com/forum/?fromgroups=#!topic/android-developers/6U4A5irWang – mattlaabs

답변

1

안드로이드 기본 최근 애플 리케이션 대화 구현은 당신을 위해 최선의 참조입니다 look here..check reloadButtons()

final ActivityManager am = (ActivityManager) 
       context.getSystemService(Context.ACTIVITY_SERVICE); 
     final List<ActivityManager.RecentTaskInfo> recentTasks = 
       am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE); 
당신은 유사한 방법으로 시도 할 수

..

+0

Thak 코멘트에 대해, 나는 4 단계를 모두 시도하고 런처에서 시작 애플리케이션 호출을 포착했습니다. 그것은 거의 완벽한 정보를 가지고 있으며 여분의 처리가 없습니다. –

+0

"거의 완벽"하다고 지정할 수 있습니까? 너는 무엇을 놓치고 있니? –

+0

내 런처가 아닌 다른 활동에서 응용 프로그램이 시작되었습니다. 대부분의 사람들은 런처를 통해 활동을 시작하므로 내 목적을 달성합니다. –