检查应用程序,例如Instagram是否由用户启动。
注意:我的应用程序针对的是棒棒糖及Android上面的版本
答案 0 :(得分:0)
是的,唯一可行的方法是通过辅助功能服务。查看此页面以了解如何创建它。 https://developer.android.com/training/accessibility/service.html他们还需要通过服务启用服务 - >辅助功能屏幕。
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED您可以查询前面的包,以确定Instigram是否位于顶部。
您肯定不想使用getRunningTasks,因为该功能已在Android 5.0 +中修改
答案 1 :(得分:0)
我发现我可以通过使用使用权限功能来实现这一目标。
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static String getForegroundProcess(Context context) {
String topPackageName = null;
UsageStatsManager usage = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> stats = usage.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*1000, time);
if (stats != null) {
SortedMap<Long, UsageStats> runningTask = new TreeMap<Long,UsageStats>();
for (UsageStats usageStats : stats) {
runningTask.put(usageStats.getLastTimeUsed(), usageStats);
}
if (runningTask.isEmpty()) {
return null;
}
topPackageName = runningTask.get(runningTask.lastKey()).getPackageName();
}
if(topPackageName==null) {
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
context.startActivity(intent);
}
return topPackageName;
}
现在不断检查所需的应用是否在前台。
String fg=getForegroundProcess(getApplicationContext());
if(fg != null && fg.contains("com.instagram.android")){
//Instagram is in foreground
}else {
}
我通过工作服务连续运行上述代码。哪些可用 棒棒糖及以上。