簡體   English   中英

如何獲取Android L的包名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM