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

  • 相关阅读:
    506. Relative Ranks
    504. Base 7
    503. Next Greater Element II
    501. Find Mode in Binary Search Tree
    500. Keyboard Row
    1268. Search Suggestions System
    原生 JavaScript 代替 jQuery【转】
    TP5 Request 请求对象【转】
    tp5中使用原生sql查询总结【转】
    成功安装mysql后,为何服务管理器里找不到MYSQL服务名【转】
  • 原文地址:https://www.cnblogs.com/afluy/p/4745824.html
Copyright © 2011-2022 走看看