2012-06-03 4 views
2

사용자가 장치에서 응용 프로그램을 시작할 때 검색하려고했습니다.사용자가 Android 장치에서 새 응용 프로그램을 시작할 때 감지합니다.

https://stackoverflow.com/a/7239840/833219

내가 스레드의 내부에이 코드를 추가 :

그래서 나는이 솔루션을 발견했다. 그래서 내 응용 프로그램은 매 3 밀리 초마다 로그를 얻지 만 로그의 차이점을 찾을 수 없으므로 사용자의 앱 실행을위한 코드가 무엇인지 감지 할 수 없습니다.

String w = log.toString(); 
Log.i("LockService","w ="+w); 



06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc android.process.media for broadcast com.android.providers.media/.UsbReceiver: pid=375 uid=10013 gids={1015, 1023, 1024, 2001, 3003, 3007} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.inputmethod.latin.dictionarypack for content provider com.google.android.inputmethod.latin.dictionarypack/.DictionaryProvider: pid=407 uid=10043 gids={3003, 1015} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc android.process.acore for content provider com.android.providers.userdictionary/.UserDictionaryProvider: pid=421 uid=10002 gids={3003, 1015} 
06-04 00:20:14.765: I/LockService(854): W/ActivityManager( 142): Unable to start service Intent { act=com.android.internal.telephony.IWapPushManager }: not found 
06-04 00:20:14.765: I/LockService(854): W/ActivityManager( 142): Unable to start service Intent { act=com.android.ussd.IExtendedNetworkService }: not found 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=476 uid=1000 gids={1015, 3002, 3001, 3003, 3007} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.android.contacts for broadcast com.android.contacts/.calllog.CallLogReceiver: pid=505 uid=10002 gids={3003, 1015} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.android.providers.calendar for broadcast com.android.providers.calendar/.CalendarReceiver: pid=545 uid=10007 gids={3003, 1015} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Config changed: {1.0 605mcc1mnc fr_FR layoutdir=0 sw320dp w320dp h508dp nrml long port finger -keyb/v/h -nav/h s.4} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.deskclock for broadcast com.google.android.deskclock/com.android.deskclock.AlarmInitReceiver: pid=562 uid=10012 gids={} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.email for broadcast com.google.android.email/com.android.email.service.EmailBroadcastReceiver: pid=577 uid=10014 gids={3003, 1015} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.exchange for service com.google.android.exchange/com.android.exchange.ExchangeService: pid=596 uid=10025 gids={3003, 1015} 
06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.apps.genie.geniewidget for broadcast com.google.android.apps.genie.geniewidge 
06-04 00:20:15.082: I/LockService(854): w =--------- beginning of /dev/log/system 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Memory class: 48 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Config changed: {1.0 0mcc0mnc fr_FR layoutdir=0 sw320dp w320dp h508dp nrml long port ?uimode ?night finger -keyb/v/h -nav/h s.2} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): System now ready 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.android.systemui for service com.android.systemui/.SystemUIService: pid=210 uid=1000 gids={1015, 3002, 3001, 3003, 3007} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.gsf.login for service com.google.android.gsf.login/com.google.android.gsf.loginservice.GoogleLoginService: pid=238 uid=10018 gids={3003, 1015, 1007, 2001, 3006} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.google.process.gapps for content provider com.google.android.gsf/.gservices.GservicesProvider: pid=262 uid=10018 gids={3003, 1015, 1007, 2001, 3006} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Config changed: {1.0 0mcc0mnc fr_FR layoutdir=0 sw320dp w320dp h508dp nrml long port finger -keyb/v/h -nav/h s.3} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.android.wallpaper for service com.android.wallpaper/.nexus.NexusWallpaper: pid=289 uid=10027 gids={1006} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.google.android.inputmethod.latin for service com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME: pid=301 uid=10024 gids={} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.android.phone for added application com.android.phone: pid=316 uid=1001 gids={3002, 3001, 3003, 1015} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.android.nfc for added application com.android.nfc: pid=331 uid=1027 gids={3002, 3001} 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 0 
06-04 00:20:15.082: I/LockService(854): I/ActivityManager( 142): Start proc com.android.launcher for activity com.android.launcher/com.android.launcher2.Launcher: pid=354 uid=10026 gids={} 

이 코드를 사용하여 I는 사용자가 응용 프로그램을 시작 있음을 감지 할 수있는 방법 :이 라인을 추가 할 때 다음

는 내가 가진 로그의 예입니다?

+0

이 질문의 두 번째 대답은 다음과 같습니다. http://stackoverflow.com/questions/3290936/android-detect-when-other-apps-are-launched –

답변

2

로그를 읽는 것은 끔찍한 생각이며 시스템 버전에 따라 다릅니다. 실제로는 here : ACTION_PACKAGE_FIRST_LAUNCH을 등록 할 수있는 방송 의도가 있지만 API 레벨 12 이상에서만 사용 가능합니다.

+0

내 브로드 캐스트 응용 프로그램이 발견되면이 브로드 캐스트를 감지합니다. 처음으로 점심을 먹었다. 사용자가 점심을 먹을 때 다른 사람을 감지하려고 할 때 –

+0

다른 사람의 의도를 포착하고 싶습니까? 보안상의 이유로이 작업을 수행 할 수 없습니다. –

+0

가능합니다. ZDBOX가이 일을합니다. 나는 어떻게 알고 싶다. –

1

로그에 태그가 ActivityManager 인 응용 프로그램 실행을 감지 할 수 있습니다.

로그에서 유용한 데이터를 찾을 수 있습니다. 실행 패키지를 감지 할 수 있습니다. 예를 들어

는 :

06-06 16:09:06.007: I/ActivityManager(1663): Starting: Intent { act=android.intent.action.MAIN flg=0x10840000 cmp=com.android.phone/.InCallScreen } from pid -1 

com.android.phone 패키지와 첫 페이지 InCallScreen 시작이다.

패키지 이름을 확인하고 대상 응용 프로그램이 시작될 때 감지 할 수 있습니다.

+0

나는 항상이 줄을 얻었고 점심 시간에 새로운 응용 프로그램을 만들 때 로그의 변경 사항을 볼 수 없습니까? –

+0

다른 장치가이를 다르게 기록 할 수 있기 때문에 항상 작동하지는 않습니다. 예를 들어, ICS에서 "Starting"은 이제 "START"이고 나머지 행은 서로 다릅니다. 또한 ICS가 탑재 된 Samsung Galaxy S2에서는 앱이 시작될 때 로그에 아무 것도 출력되지 않습니다. – user1118764

관련 문제