[英]How to get running package names for Android L
所以我們都知道ActivityManager上的getRecentTasks()和getRunningTasks()現在已被棄用,並將在Android L和更高版本的設備上返回一個簡化的結果集。
Android L中getRunningTasks的替代方案
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 = zh-CN
目前我正在使用此代碼:
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中實現這樣的功能?
不幸的是,在Android 5.0中沒有相應的東西:它不可能獲得最多的活動,也不可能在實時啟動新的應用程序/活動時獲得任何回調。
請參考此鏈接。
我希望它對你有所幫助,在我的項目中它有用。 謝謝。
試試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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.