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

  • 相关阅读:
    WPF 窗口图标与背景
    WPF Convert和RelativeSource
    属性更改通知(INotifyPropertyChanged)——针对ObservableCollection
    WPF 输入异常提示
    WPF 异常处理
    WPF DataGrid 触发器
    拉格朗日乘子法(Lagrange multiplier)和KKT条件
    在同一台电脑上添加多个ssh key
    重积分的换元法
    Matlab之显示输出
  • 原文地址:https://www.cnblogs.com/afluy/p/4745824.html
Copyright © 2011-2022 走看看