您的位置:首页 > 移动开发 > Android开发

android 应用程序使用统计

2012-06-08 15:28 274 查看
//通过反射方法获得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);
注意加权限:<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐