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

时间: 2024-08-03 18:11:48

Android L 5.0版本获取topActivity的方法的相关文章

Android L / 5.0 帮助文档 API21文档 sample demo源码 下载

如无法登陆google,浏览android官网也是问题,这里提供android L的官方文档资料下载.API版本21 参考文档较大,解压后最好使用IE浏览器打开,并工具选项卡中设置为脱机工作模式, 如是,则打开文档速度会加快许多.否则发送js请求等待google响应,会出现加载十分缓慢的现象. 也可修改网页源码,使之不发送访问google的请求,请自行百度,etc 如果想用google搜索,又无法打开google网站,可以试用下谷粉搜索 http://www.gfsoso.com/ Androi

android 自定义5.0版本 Progress效果-ProgressWheel(例如,淘宝加载)

在网上找到5.0Progress效果如下: 开源代码地址:https://github.com/pnikosis/materialish-progress attr.xml <declare-styleable name="ProgressWheel"> <attr name="matProg_progressIndeterminate" format="boolean" /> <attr name="ma

Android第二十二期 - QQ5.0版本最简洁实现方法

代码已经整理好,效果如下: 地址:http://down.51cto.com/data/1886299

Android Studio 或 IntelliJ IDEA获取数字签名的方法

原先在 Eclipse中 数字签名(SHA1或MD5)的获取方法 为: 点击 Eclipse导航栏的Windows --> Preference --> Android --> Build 现在 改到 Android Studio 或 IntelliJ IDEA下开发Android 应用,只能用命令行获取数字签名 1.首先进入jdk的bin目录下 2.然后输入keytool.exe -list -alias androiddebugkey -keystore  "C:\User

ANDROID L——Material Design详解(主题和布局)

Android L: Android L可能就是Android Lollipop或者Lemon Pie(4.5或者5.0),因为Google一直以来都是用甜点为版本命名. Google之前就已经提前推出了Android L Developer Preview(开发者预览版)来帮助开发者更快的了解Android特性,而不久前也推出了64位的模拟器镜像.相信Android L正式版也不远了,所以是时候开始学习Android L了. 关于Android L如何配置模拟器和创建项目,如果大家有兴趣的话可

android拍照或相册获取头像(兼容4.4以下,4.4,5.0,6.0版本)

首先为权限: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.vending.BILLING" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&g

Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题.今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程 一起分享给大家.

如何获取和安装Android L开发者预览版

周三谷歌推出下一个流行的移动操作系统Android L.但是只提供了简单地预览版本,稍后将提供一个开发者预览版,完整版计划在今年秋天发布. 下面我们一起来看看如何下载和安装. 在你安装AndroidL开发者预览版之前,你需要知道的几件事情: 1.此版本是不稳定的,不建议在你的常用设备上使用: 2.加载过程不是很简单,你需要借助于命令行工具并且具有错误排除能力. Google已经在下载页面和系统启动页面提示了,此次开发者预览版只适合 Nexus 5 和Nexus 7 而且不需要开发者账号. 下载系

关于android 不同版本获取wifi SSID,真的没话说了

真的没话说了.......,为何要这样.......,觉得好玩吗.......,谷歌那个写这个获取wifiSSID的接口的工程师闲的蛋疼. 获取wifiSSID的方法如下: android.net.wifi.WifiManager mWifiManager = (WifiManager) MainActivity.this .getSystemService(Context.WIFI_SERVICE); android.net.wifi.WifiInfo mWifiInfo = mWifiMan