3

以下代码在 6.0 版之前运行良好

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
                    UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
                    long currentTime = System.currentTimeMillis();
                    List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, currentTime - 100 * 1000, currentTime);
                    if(stats != null) {
                        long lastUsedAppTime = 0;
                        for (UsageStats usageStats : stats) {
                            if (usageStats.getLastTimeUsed() > lastUsedAppTime) {
                                String foregroundApp = usageStats.getPackageName();
                                lastUsedAppTime = usageStats.getLastTimeUsed();
                            }
                        }
                    }
                }

现在 queryUsageStats 返回空列表。

有没有其他方法可以获取前台应用程序?

注意:添加了以下权限以检索usagestats

<uses-permission xmlns:tools="http://schemas.android.com/tools"
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" /> 

提前致谢。

4

2 回答 2

0

对于 Android 6.0.1,您需要重新配置代码以使 Android 权限框架适用于您的应用。

您可以参考此链接以获取更多信息。 Android 6.0.1 (Marshmallow) 的 Android 权限开发

于 2016-07-13T16:58:36.153 回答
0

这是一个迟到的回复,但希望它会帮助其他人。

转到系统设置,搜索“数据使用访问”,并为您的应用启用该功能,您将收到一个非空列表。

于 2019-07-08T23:11:43.543 回答