为了账号安全,请及时绑定邮箱和手机立即绑定

如何在棒棒糖中获取“ getTopActivity”名称或获取当前正在运行的应用程序包名称?

如何在棒棒糖中获取“ getTopActivity”名称或获取当前正在运行的应用程序包名称?

青春有我 2019-12-27 09:13:16
我正在创建一个应用锁定应用程序。如何在棒棒糖中获取当前正在运行的任务?getRunningTaskinfo棒棒糖API中已弃用该方法,那么如何解决此问题?
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

在API 21或更高版本中获取“运行应用”的最佳解决方案是尝试以下方法。这项工作对我来说


private String retriveNewApp() {

    if (VERSION.SDK_INT >= 21) {

        String currentApp = null;

        UsageStatsManager usm = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);

        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<>();

            for (UsageStats usageStats : applist) {

                mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);

            }

            if (mySortedMap != null && !mySortedMap.isEmpty()) {

                currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();

            }

        }

        Log.e(TAG, "Current App in foreground is: " + currentApp);


        return currentApp;


    }

    else {


        ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

        String mm=(manager.getRunningTasks(1).get(0)).topActivity.getPackageName();

        Log.e(TAG, "Current App in foreground is: " + mm);

        return mm;

    }

}


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 681 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信