Это работает нормально, пока это само приложение-служба. В любом другом случае (например, если приложение больше не на переднем плане) эта служба не работает. Была ли у кого-нибудь еще проблема: служба специальных возможностей работает только на переднем плане? Если это намеренно, то, на мой взгляд, эта Служба не имеет смысла?
Вот мой класс AccessibilityService:
Код: Выделить всё
public class MyAccessibilityService extends AccessibilityService {
private static final String TAG = "AccessabilityService_Test";
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.e(TAG, "onAccessibilityEvent: EventType: " + event.getEventType() + " PackageName: " + event.getPackageName());
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show();
String packageName = event.getPackageName() != null ? event.getPackageName().toString() : "null";
Log.e(TAG, "Detected package: " + packageName);
PackageManager packageManager = this.getPackageManager();
try {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
CharSequence applicationLabel = packageManager.getApplicationLabel(applicationInfo);
Log.e(TAG, "App name is: " + applicationLabel);
Toast.makeText(this, "App name: " + applicationLabel, Toast.LENGTH_LONG).show();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
@Override
public void onInterrupt() {
Log.e(TAG, "onInterrupt: something went wrong");
Toast.makeText(getApplicationContext(), "onInterrupt: something went wrong ", Toast.LENGTH_LONG).show();
}
@Override
protected void onServiceConnected(){
super. onServiceConnected();
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED |
AccessibilityEvent.TYPE_VIEW_FOCUSED |
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED |
AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
// Set the type of feedback your service provides.
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
// Default services are invoked only if no package-specific services are
// present for the type of AccessibilityEvent generated. This service is
// app-specific, so the flag isn't necessary. For a general-purpose service,
// consider setting the DEFAULT flag.
// info.flags = AccessibilityServiceInfo.DEFAULT;
info.notificationTimeout = 100;
this.setServiceInfo(info);
}
@Override
public boolean onUnbind(Intent intent) {
Toast.makeText(this, "Unbind", Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
}
Код: Выделить всё
Код: Выделить всё
(Google Pixel 8, Android версии 15/Medium Phone API 35)
Подробнее здесь: https://stackoverflow.com/questions/793 ... foreground