1

从后台服务,我得到一个启动器应用程序包名称。

使用的代码:

private String printForegroundTask() {
        String currentApp = "NULL";
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            UsageStatsManager usm = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
            long time = System.currentTimeMillis();
            List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_YEARLY, time - 1000 * 1000,
                    time);
            if (appList != null && appList.size() > 0) {
                SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
                for (UsageStats usageStats : appList) {
                    mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
                }
                if (mySortedMap != null && !mySortedMap.isEmpty()) {
                    currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
                }
            }
        } else {
            ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
            currentApp = am.getRunningTasks(1).get(0).topActivity.getPackageName();
        }
        return currentApp;
    }

当我启动下载应用程序时,我得到了包名称com.android.documentsui,但这个包属于 Documents 应用程序。

文档应用程序:com.android.documentsui

下载管理器应用程序:com.android.providers.downloads

下载应用程序:com.android.providers.downloads.ui

我正面临棒棒糖的这个问题。

我检查了应用程序锁定应用程序。我发现如果下载应用程序被锁定并启动,我将文档视为应用程序名称而不是下载,即应用程序锁定应用程序识别出所有上述定义的包属于同一个应用程序。

在此处输入图像描述

对此有任何想法吗?

4

1 回答 1

-1

使用此代码,您可以获得安装在 moblie 中的应用程序列表的包名

最终 PackageManager pm = getPackageManager(); //获取已安装应用的列表。列出包 = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) { Log.d(TAG, "Installed package :" + packageInfo.packageName); Log.d(TAG, "启动活动:" + pm.getLaunchIntentForPackage(packageInfo.packageName)); }

于 2015-09-15T05:58:04.660 回答