android 应用程序使用统计
16lz
2022-01-25
//通过反射方法获得usagestats服务
Class<?> cServiceManager = Class .forName("android.os.ServiceManager"); Method mGetService = cServiceManager.getMethod("getService", java.lang.String.class); Object oRemoteService = mGetService.invoke(null, "usagestats"); // IUsageStats oIUsageStats = // IUsageStats.Stub.asInterface(oRemoteService) Class<?> cStub = Class .forName("com.android.internal.app.IUsageStats$Stub"); Method mUsageStatsService = cStub.getMethod("asInterface", android.os.IBinder.class); Object oIUsageStats = mUsageStatsService.invoke(null, oRemoteService); // PkgUsageStats[] oPkgUsageStatsArray = // mUsageStatsService.getAllPkgUsageStats(); Class<?> cIUsageStatus = Class .forName("com.android.internal.app.IUsageStats"); Method mGetAllPkgUsageStats = cIUsageStatus.getMethod( "getAllPkgUsageStats", (Class[]) null); Object[] oPkgUsageStatsArray = (Object[]) mGetAllPkgUsageStats .invoke(oIUsageStats, (Object[]) null); System.out.println(oPkgUsageStatsArray); Class<?> cPkgUsageStats = Class .forName("com.android.internal.os.PkgUsageStats"); for (Object pkgUsageStats : oPkgUsageStatsArray) { // get pkgUsageStats.packageName, pkgUsageStats.launchCount, // pkgUsageStats.usageTime String packageName = (String) cPkgUsageStats.getDeclaredField( "packageName").get(pkgUsageStats); int launchCount = cPkgUsageStats .getDeclaredField("launchCount").getInt(pkgUsageStats); long usageTime = cPkgUsageStats.getDeclaredField("usageTime") .getLong(pkgUsageStats); System.out.println(packageName + ":" + launchCount + ":" + usageTime);
注意加权限:
更多相关文章
- android 通过资源文件名称获取资源文件id
- Android(安卓)访问权限许可大全
- Android(安卓)获取通话记录
- android执行Linux命令
- android获取imei和imsi
- Android读取手机联系人且获得联系人手机号+名称
- android退出应用程序
- Android中通过当前经纬度获得城市
- Android版本检测与更新