所以我们都知道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的包名称,以便在用户打开/启动锁定的应用程序时显示锁定屏幕。< / p>
与此应用非常相似: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中实现类似的功能?
答案 0 :(得分:1)
不幸的是,在Android 5.0中没有相应的内容:它无法获得最多的活动,也无法在实时启动新的应用程序/活动时获得任何回调。
答案 1 :(得分:1)
请参阅此link.
我希望它对你有所帮助,在我的项目中它起作用。谢谢。
答案 2 :(得分:-1)
尝试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();
}