我有兴趣在 android 中获取已安装软件包的值。我试图找出已经安装的软件包执行了多少次(关闭和打开)的值。我知道我可以通过 sharepreferences 为我的应用程序执行此操作,但如何处理已经存在的包?我已经有了使用 PackageManager 安装的软件包列表。
提前致谢
PackageInfo 类,可以使用 PackageManager 为 Packages 检索,您可以为您提供有关首次安装时间和上次更新时间的信息。但是似乎没有任何方法可以知道它启动了多少次,等等。我什至不确定系统是否会跟踪这些信息。查看http://developer.android.com/reference/android/content/pm/PackageInfo.html
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> apps = packageManager.queryIntentActivities(mainIntent, 0);
尝试这个。
PackageManager manager = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> apps = manager.queryIntentActivities(mainIntent, 0);
Collections.sort(apps, new ResolveInfo.DisplayNameComparator(manager));
if (apps != null) {
final int count = apps.size();
if (mApplications == null) {
mApplications = new ArrayList<ApplicationInfo>(count);
}
}
for (int i = 0; i < count; i++) {
ApplicationInfo application = new ApplicationInfo();
ResolveInfo info = apps.get(DEFAULT_KEYS_SEARCH_LOCAL);
application.title = info.loadLabel(manager);
application.setActivity(new ComponentName(
info.activityInfo.applicationInfo.packageName,
info.activityInfo.name),
Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
application.icon = info.activityInfo.loadIcon(manager);
// mApplications.add(application);
}
这将为您提供已安装的所有应用程序的计数
我认为这在常规应用程序中是不可能的。虽然如果你有 root 访问权限,你可以执行
dumpsys usagestats
并解析输出。
或者您可以使用Usagestats Service
已经进行跟踪的。但是,您再次需要 root 访问权限。