检测用户何时在Android设备上启动新应用程序

检测用户何时在Android设备上启动新应用程序,android,Android,我一直在尝试检测用户何时在其设备上启动应用程序 所以我找到了这个解决方案: 我在一个线程中添加了这个代码。因此,我的应用程序每3毫秒获取一次日志,但我找不到日志之间的差异,因此我无法检测用户应用程序启动的代码 下面是我添加此行时得到的日志示例: String w = log.toString(); Log.i("LockService","w ="+w); 06-04 00:20:14.765: I/LockService(854): I/ActivityManager( 142):

我一直在尝试检测用户何时在其设备上启动应用程序

所以我找到了这个解决方案:

我在一个线程中添加了这个代码。因此,我的应用程序每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={}

使用此代码,我如何检测用户启动了应用程序?

读取日志是一个可怕的想法,而且在系统的不同版本中也会出现这种情况。实际上,您可以注册一个广播目的:
ACTION\u PACKAGE\u FIRST\u LAUNCH
,但是请注意,这仅在API级别12+中可用。

您可以在日志中检测带有
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
从第一页开始


您可以检查软件包名称并检测目标应用程序何时启动。

您可能需要查看此问题的第二个答案:此广播检测我开发的应用程序是否第一次启动。我想检测用户何时使用其他应用程序您想了解其他人的意图?出于安全考虑,您不能这样做。这是可能的。ZDBOX完成这项工作。我想知道它是如何工作的,除非你有根。如果你有根基本上所有的安全都是窗外的,所以这就是你的答案。克里斯托弗,不。它不带根慢跑。就像其他软件一样(我至少试了三个)。我想知道怎么做。我总是有这一行,当我使用一个新的应用程序时,我看不到日志中有什么变化?这并不总是有效的,因为不同的设备可能会以不同的方式记录。例如,在ICS中,“开始”现在是“开始”,行的其余部分也不同。此外,在配备ICS的三星Galaxy S2中,当应用程序启动时,不会向日志输出任何内容。