I want to use AccessibilityService to perform global actions such as back, take_screenshot and more. if the service permission is disabled i get Nullpointerexception and if accessibility service permission is enabled it doesn't do anything at all.
MainActivity.java
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = findViewById(R.id.b);
ExecutionService service = new ExecutionService();
b.setOnClickListener(v -> {
service.performGlobalAction(AccessibilityService.GLOBAL_ACTION_TAKE_SCREENSHOT);
});
}
}
My Accessibility Service
public class ExecutionService extends AccessibilityService {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
}
@Override
public void onInterrupt() {
}
}
accessibility service config xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged|typeWindowContentChanged"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:description="@string/accessibility_description"
android:notificationTimeout="100" />
Manifest declaration
<service
android:name=".ExecutionService"
android:enabled="true"
android:exported="true"
android:label="@string/app_name"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService"/>
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/auto_reply_service_config"/>
</service>
I did not declare the
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
permission.
ExecutionService service = new ExecutionService();
Doesn't work for accessibility.
The service starts or stops after you enable or disable it manually in the smart settings.
Use broadcasts.