gpt4 book ai didi

android - 如何在代码中检查主屏幕是否在 android 中(在所有设备上)?

转载 作者:行者123 更新时间:2023-11-29 20:32:00 25 4
gpt4 key购买 nike

我正在尝试在主屏幕中显示 float 图标。我正在使用以下代码:

        List<RunningTaskInfo> runningtasks = actvityManager.getRunningTasks(1);

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
String topmostapp = runningtasks.get(0).topActivity.getPackageName();

这适用于 Lollipop 版本以下的设备。

对于 Lollipop,我正在尝试使用以下代码:

          for(RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
if ((appProcess.processName.contains("launcher"))) {
//Sets the condition.
}

代码中的问题是只有当主屏幕包有像三星设备这样的“启动器”字样时才能正常工作。但在 Moto G 等设备中,包名称不同(“com.google.android.googlequicksearchbox”)。

所以,我想知道是否有任何通用代码来检测主屏幕是否在焦点上,而不管设备如何?

提前致谢。

最佳答案

我找到了上述问题的解决方案。我删除了硬编码包名称比较检查,而是检查主屏幕包名称并将该字符串与顶级应用程序进程名称进行比较。如果匹配,我将显示托盘图标。此代码仅适用于 Lollipop 及以上版本。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

PackageManager localPackageManager = getPackageManager();
Intent checkHomeInLollipopIntent = new Intent(Intent.ACTION_MAIN);
checkHomeInLollipopIntent.addCategory(Intent.CATEGORY_HOME);
String str = localPackageManager.resolveActivity(
checkHomeInLollipopIntent,
PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;

ActivityManager activityManager = (ActivityManager) this
.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager
.getRunningAppProcesses();

for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
if ((appProcess.processName.equalsIgnoreCase(str))) {
bHomeScreen = true;
}

}
}

关于android - 如何在代码中检查主屏幕是否在 android 中(在所有设备上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31802311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com