У меня есть AccessibilityService в моем приложении.Когда приложение выходит на передний план, я пытаюсь определить его и его тип.В общем, если приложение - игра, я сделаю несколько сотрудников базы данных.Но я не могу определить, является ли запущенное приложение игрой или нет.
Код моей службы:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
if (event.getPackageName() != null && event.getClassName() != null) {
ComponentName componentName = new ComponentName(
event.getPackageName().toString(),
event.getClassName().toString()
);
ActivityInfo activityInfo = tryGetActivity(componentName);
boolean isActivity = activityInfo != null;
if (isActivity) {
if ((activityInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
Log.i(TAG, "system");
} else {
// For Opening
if ((activityInfo.flags & ApplicationInfo.FLAG_IS_GAME) == ApplicationInfo.FLAG_IS_GAME) {
Log.v(TAG, "Playing games");
AppInfo.updateAppInfo(componentName.getPackageName(), new Date(), true, Utlis.AppType.GAME);
}
}
}
}
}
}
private ActivityInfo tryGetActivity(ComponentName componentName) {
try {
return getPackageManager().getActivityInfo(componentName, 0);
} catch (PackageManager.NameNotFoundException e) {
return null;
}
}