从后台服务中,我获得了一个启动器应用程序包名称。
使用的代码:
private String printForegroundTask() {
String currentApp = "NULL";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager usm = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_YEARLY, time - 1000 * 1000,
time);
if (appList != null && appList.size() > 0) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : appList) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
} else {
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
currentApp = am.getRunningTasks(1).get(0).topActivity.getPackageName();
}
return currentApp;
}
当我启动下载应用程序时,我收到包名 com.android.documentsui ,但此包属于Documents app。
文件应用: com.android.documentsui
下载管理器应用: com.android.providers.downloads
下载App: com.android.providers.downloads.ui
我正在为Lollipop面对这个问题。
我检查了App lock application。我发现如果下载应用程序被锁定并启动,我会将文档视为应用程序名称而不是下载, 即应用程序锁定应用程序正在识别所有上面定义的包都属于同一个应用程序。
有关于此的任何想法吗?
答案 0 :(得分:-1)
使用此代码,以便您可以获取moblie中安装的应用列表的包名称
final PackageManager pm = getPackageManager(); //获取已安装应用的列表。 List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){ Log.d(TAG,&#34;已安装的软件包:&#34; + packageInfo.packageName); Log.d(TAG,&#34;启动活动:&#34; + pm.getLaunchIntentForPackage(packageInfo.packageName)); }