zoukankan      html  css  js  c++  java
  • Android L 5.0版本获取topActivity的方法

    Android L版本中getRunningTasks已经失效

    需要添加权限:

    <uses-permission android:name="android.permission.GET_TASKS"/>

    public static String getTopPkgName(Context context) {
            ActivityManager am = (ActivityManager) context
                    .getSystemService(Context.ACTIVITY_SERVICE);
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
                Field field = null;
                try {
                    field = RunningAppProcessInfo.class
                            .getDeclaredField("processState");
                } catch (NoSuchFieldException e) {
                    e.printStackTrace();
                }
                List<ActivityManager.RunningAppProcessInfo> processInfos = am
                        .getRunningAppProcesses();
                for (RunningAppProcessInfo app : processInfos) {
                    if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND
                            && app.importanceReasonCode == 0) {
                        Integer state = null;
                        try {
                            state = field.getInt(app);
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        }
                        if (state != null && state == 2) {
                            if (app.pkgList.length > 0) {
                                Mlog.d(TAG, "---L getTopPkgName: " + app.pkgList[0]);
                                return app.pkgList[0];
                            }
                        }
                    }
                }
            } else {
                List<RunningTaskInfo> runningTasks = am.getRunningTasks(1);
                if (runningTasks != null && runningTasks.size() > 0) {
                    RunningTaskInfo runningTaskInfo = runningTasks.get(0);
                    ComponentName topActivity = runningTaskInfo.topActivity;
                    String packageName = topActivity.getPackageName();
                    Mlog.d(TAG, "---getTopPkgName: " + packageName);
                    return packageName;
                }
            }
            Mlog.d(TAG, "---getTopPkgName: NULL");
            return null;
        }

     参考:

    http://stackoverflow.com/questions/24625936/getrunningtasks-doesnt-work-in-android-l

    http://blog.csdn.net/wulianghuan/article/details/46348043

  • 相关阅读:
    C#高级编程第11版
    C#特性
    设计模式 单一职责原则
    设计模式 依赖倒置原则
    C# 预处理指令
    毕业设计 python opencv实现车牌识别 矩形矫正
    毕业设计 python opencv实现车牌识别 颜色判断
    毕业设计 python opencv实现车牌识别 界面
    南昌大学航天杯第二届程序设计竞赛校赛网络同步赛 I
    南昌大学航天杯第二届程序设计竞赛校赛网络同步赛 G
  • 原文地址:https://www.cnblogs.com/afluy/p/4745824.html
Copyright © 2011-2022 走看看