android 应用程序使用统计
16lz
2022-04-01
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);
这个系统权限不知道怎么添加
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
该方法实验没有通过,说是因为没有上面的这个权限,我把该放在manifest中没有效果,后来网上查了一下说是系统权限,自己不会弄就没有继续测试了
更多相关文章
- Android(安卓)代码片段
- Android(安卓)查看本机外网IP
- Android开关机代码
- Ijkplayer视频播放
- Android中通过代码检测系统是否有root权限
- android基于AndPermission的权限申请封装类
- android 显示 网络图片
- Android代码实现飞行模式的打开
- android 获得当前活动的Acticity