Служба специальных возможностей работает только тогда, когда приложение Accessibility находится на переднем плане.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Служба специальных возможностей работает только тогда, когда приложение Accessibility находится на переднем плане.

Сообщение Anonymous »

Я начал работать со Службой специальных возможностей и попытался создать свою собственную Службу, которая сначала в целях тестирования будет просто показывать мне, какое приложение было открыто.
Это работает нормально, пока это само приложение-служба. В любом другом случае (например, если приложение больше не на переднем плане) эта служба не работает. Была ли у кого-нибудь еще проблема: служба специальных возможностей работает только на переднем плане? Если это намеренно, то, на мой взгляд, эта Служба не имеет смысла?
Вот мой класс 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);
}
Я также пробовал другой вариант, используя конфигурацию (accessibility_service_config.xml): Кроме того, он зарегистрирован как служба в AndroidManifest. Я пробовал это на эмуляторе, а также на своем телефоне и на более старом телефоне. Также услуга активируется в настройках.
(Google Pixel 8, Android версии 15/Medium Phone API 35)

Подробнее здесь: https://stackoverflow.com/questions/793 ... foreground
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»