【问题标题】:How to get running package names for Android L如何获取 Android L 的运行包名称
【发布时间】:2014-10-21 16:32:19
【问题描述】:

所以我们都知道 ActivityManager 上的 getRecentTasks() 和 getRunningTasks() 现在已弃用,将在 Android L 及更高版本的设备上返回缩减的结果集。

Alternative to getRunningTasks in Android L

https://code.google.com/p/android-developer-preview/issues/detail?id=29

但是,我正在尝试找到一种解决方案,让我的 App Locker 应用程序在 Android L 上保持活动状态。我需要顶部 Activity 的包名称,以便在用户打开/启动锁定的应用程序时显示锁定屏幕。

和这个应用非常相似:https://play.google.com/store/apps/details?id=com.domobile.applock&hl=en

目前我正在使用此代码:

  ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager
                .getRunningTasks(1);
        ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
        String activityOnTop = ar.topActivity.getPackageName();

但它在 Android L 中不起作用,所以我不确定具体该怎么做......

如何在 Android L 中实现类似的功能?

【问题讨论】:

标签: java android android-5.0-lollipop activity-manager


【解决方案1】:

不幸的是,Android 5.0 中没有类似的功能:无法获得最顶层的 Activity,也无法在实时启动新应用程序/Activity 时获得任何回调。

【讨论】:

    【解决方案2】:

    请参考link.

    我希望它对你有所帮助,在我的项目中它可以工作。谢谢。

    【讨论】:

    • 如何获取类名来获取topactivity
    • 您无法在 Android L 中获得顶级活动类名称,但请尝试使用此代码,它在我的项目中完美运行.. String mClassName = mActivityManager.getRunningTasks(1).get(0).topActivity。获取类名(); @muku
    • getRunningTasks(1) 已弃用,我认为它在 Android L 中不起作用
    【解决方案3】:

    在Android L上试试这行代码

    ActivityManager activityManager = (ActivityManager) getSystemService (Context.ACTIVITY_SERVICE);
    
    String packageName = activityManager.getRunningAppProcesses().get(0).processName;
    

    请注意,这仅适用于 Lollipop 设备。如果您需要任何平台支持,请添加以下代码。

    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP)
    {
    String packageName = activityManager.getRunningAppProcesses().get(0).processName;
    }
    else if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
    {
    String packageName =  ProcessManager.getRunningForegroundApps(getApplicationContext()).get(0).getPackageName();
    }
    else
    {
    String packageName = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      相关资源
      最近更新 更多