Определить, когда пользователь запускает новое приложение на устройстве 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={}

Используя этот код, как я могу определить, что пользователь запустил приложение?

 James Black04 июн. 2012 г., 01:59
Вы можете посмотреть на второй ответ на этот вопрос:stackoverflow.com/questions/3290936/…

Ответы на вопрос(2)

и она также разбита на разные версии системы. На самом деле есть намерение вещания, для которого вы можете зарегистрироватьсяВот: ACTION_PACKAGE_FIRST_LAUNCHоднако учтите, что это доступно только в API уровня 12+.

 06 июн. 2012 г., 16:28
Вы хотите поймать намерения других людей? Вы не можете сделать это по соображениям безопасности.
 21 мая 2013 г., 11:38
Кристофер, нет. Это делает пробежку без рута. Как и другие программы (я пробовал по крайней мере три). Я хотел бы знать, как.
 21 мая 2013 г., 05:28
@JoubertVasconcelos на самом деле это делаетnot делать работу, если у вас нет root. Если у вас есть root, в основном вся защита находится вне окна, так что это ваш ответ.
 20 мая 2013 г., 20:06
Это возможно. ZDBOX делает эту работу. Я хочу знать как.
 haythem souissi05 июн. 2012 г., 01:29
эта трансляция определяет, запускается ли мое разработанное приложение в первый раз. Я хочу, чтобы определить, когда пользователь обедает другие приложения

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 начинается для первой страницы.

Вы можете проверить имя пакета и определить, когда запускается целевое приложение.

 haythem souissi07 июн. 2012 г., 18:43
я всегда получал эту строку, и я не могу видеть, что меняется в журнале, когда я запускаю новое приложение?
 03 авг. 2012 г., 10:50
Это не всегда работает, поскольку разные устройства могут регистрировать это по-разному. Например, в ICS «Запуск» теперь "START", и остальная часть строки также отличается. Кроме того, в Samsung Galaxy S2 с ICS ничего не выводится в журнал при запуске приложения.

Ваш ответ на вопрос