获取App使用记录( 二 )

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");StringBuffer sb = new StringBuffer();sb.append("nerver used : ");for (Object pkgUsageStats : oPkgUsageStatsArray) {// get pkgUsageStats.packageName, pkgUsageStats.launchCount,// pkgUsageStats.usageTimeString packageName = (String) cPkgUsageStats.getDeclaredField("packageName").get(pkgUsageStats);int launchCount = cPkgUsageStats.getDeclaredField("launchCount").getInt(pkgUsageStats);long usageTime = cPkgUsageStats.getDeclaredField("usageTime").getLong(pkgUsageStats);if(launchCount > 0)Log.v("getPkgUsageStats",packageName + "count: " + launchCount + "time:"+ usageTime);else{sb.append(packageName+" ");}}Log.v("getPkgUsageStats",sb.toString());} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
--------------------------------------------------------------
获取权限除了跳转到页面,手动给予之外 还可以利用下面的方式进行代码操作 。
权限管理--
自带的,4.3出现4.4
v4包下类 用来适配低版本环境
7.0之后推荐使用