获取当前正在运行的应用程序';s包名方法在Android 10中无法正常工作

获取当前正在运行的应用程序';s包名方法在Android 10中无法正常工作,android,android-studio,Android,Android Studio,我正在使用AppLocker,通过获取顶级应用程序的包名来显示对选定应用程序的锁定。为此,我每1秒调用一次服务中的方法,以检查哪个应用程序位于顶部。我已经实现了这些链接中给出的答案。它在我的pixel 2(Android 10)设备中无法正常工作。对于某些应用程序,如youtube,当它在最小化后第一次打开时,上述方法会返回正确的包名,但对于其他应用程序,如消息、playstore等,则不会返回正确的包名。我想在app minimize上实现我的应用程序锁定 注意:当应用程序(消息、playst

我正在使用AppLocker,通过获取顶级应用程序的包名来显示对选定应用程序的锁定。为此,我每1秒调用一次服务中的方法,以检查哪个应用程序位于顶部。我已经实现了这些链接中给出的答案。它在我的pixel 2(Android 10)设备中无法正常工作。对于某些应用程序,如youtube,当它在最小化后第一次打开时,上述方法会返回正确的包名,但对于其他应用程序,如消息、playstore等,则不会返回正确的包名。我想在app minimize上实现我的应用程序锁定

注意:当应用程序(消息、playstore等)第一次打开时,它会返回正确的包名,但当该应用程序通过最小化然后重新打开应用程序进入后台时,该方法不会返回包名


我已经搜索了很多,但没有找到任何能在android 10上正常工作的方法

正如有人在你获得解决方案的帖子中指出的那样,你是否授予了正确的权限

你需要这个:

<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>


我在清单中添加了这个。此外,我正在授予“访问使用情况统计”的权限。我的方法从Kitkat到Pie都运行得很好,但在Android10中没有,如果它只出现在Android10上,我认为一些安全改进或处理方法已经改变。很难找到解决方案,因为它是全新的。我认为android 10在下面突出显示的queryUsageStats行(UsageStatsManager.INTERVAL_DAILY,time-1000*1000,time)currentApp=mySortedMap.get(mySortedMap.lastKey()).getPackageName()中存在问题;在这些行中,它没有选择顶级应用的正确包装名称