gpt4 book ai didi

java - 前台服务运行时如何检测当前前台应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:14 26 4
gpt4 key购买 nike

我目前正在开发一个 AppLock,其中包括检测当前前台应用程序的服务,但问题是该服务不断将 AppLock 本身作为当前前台应用程序返回,即使在我最小化它或关闭 AppLock 后也是如此。有办法解决这个问题吗?

我知道其他类似的问题已经得到解答,但据我所知,我没有看到其他人遇到与我相同的问题。

下面是我用来检测前台应用程序的代码

public String getForegroundApp() {

String currentApp = "NULL";
UsageStatsManager usm = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, 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);
List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();
currentApp = tasks.get(0).processName;
}

return currentApp;
}
public int onStartCommand(Intent intent, int flags, int startId) {
if(foreapp.equals(lockedApp)){
Intent intentp3=new Intent(getApplicationContext(), PasswordPage3.class);
intentp3.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentp3);
}
return START_STICKY;
}

我用来启动服务的接收器:

public class RestartReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent lol) {
Log.i("running in the back","restarting");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(new Intent(context, MyService.class));
} else {
context.startService(new Intent(context, MyService.class));
}
}
}

注意:foreapp和lockedApp都是字符串变量

currentApp 返回的字符串始终是 com.example.apptest3,这是我正在处理的包名称。

最佳答案

自 Android L 以来,您无法获取顶级 Activity,但有一种解决方法,可以使用 ActivityManager.RunningAppProcessInfo重要性来获取用户何时启动应用,checkout these previous answers .

关于java - 前台服务运行时如何检测当前前台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826798/

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