在Android 6中获取前台程序包名称

时间:2016-02-17 03:09:27

标签: android android-6.0-marshmallow

我使用下面的代码获取应用程序包名称。 但是,当我滑动通知栏时,它将采用通知栏中运行的应用程序包的名称。 或者在应用程序更新新版本的地方,它将采用应用程序包的名称。 我尝试在Android 5上获得确切的结果打开应用程序包名称。 因此,如何获取应用程序包的名称目前正在Android open 6上运行

    public static String printForegroundTask(Context context) {
    String currentApp = "Null";
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        UsageStatsManager usm = (UsageStatsManager) context
                .getSystemService("usagestats");
        long time = System.currentTimeMillis();
        List<UsageStats> appList = usm.queryUsageStats(
                UsageStatsManager.INTERVAL_DAILY, 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) context
                .getSystemService(Context.ACTIVITY_SERVICE);
        currentApp = am.getRunningTasks(1).get(0).topActivity
                .getPackageName();

    }
    return currentApp;
}

0 个答案:

没有答案