4

我有兴趣在 android 中获取已安装软件包的值。我试图找出已经安装的软件包执行了多少次(关闭和打开)的值。我知道我可以通过 sharepreferences 为我的应用程序执行此操作,但如何处理已经存在的包?我已经有了使用 PackageManager 安装的软件包列表。

提前致谢

4

4 回答 4

2

PackageInfo 类,可以使用 PackageManager 为 Packages 检索,您可以为您提供有关首次安装时间和上次更新时间的信息。但是似乎没有任何方法可以知道它启动了多少次,等等。我什至不确定系统是否会跟踪这些信息。查看http://developer.android.com/reference/android/content/pm/PackageInfo.html

于 2012-09-02T04:07:25.103 回答
2
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager packageManager = mContext.getPackageManager(); 
List<ResolveInfo> apps = packageManager.queryIntentActivities(mainIntent, 0);

尝试这个。

于 2012-09-12T03:14:21.760 回答
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);

        }

这将为您提供已安装的所有应用程序的计数

于 2012-09-12T11:43:04.650 回答
0

我认为这在常规应用程序中是不可能的。虽然如果你有 root 访问权限,你可以执行

dumpsys usagestats 

并解析输出。

或者您可以使用Usagestats Service已经进行跟踪的。但是,您再次需要 root 访问权限。

于 2012-09-08T05:49:54.910 回答