Reputation: 1
I'm not Recieving any Accessibility Event when app is minimized (in android 14) but it works fine in android 10
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
</queries>
<application
android:name="MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="MainActivity"
android:exported="true">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="CrashActivity" />
<service
android:name="ScreenshotService"
android:foregroundServiceType="mediaProjection"
android:permission="android.permission.FOREGROUND_SERVICE" />
<service
android:name="MyAccessibilityService"
android:exported="true"
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/accessibility_service_config" />
</service>
</application>
</manifest>
Accessibility service:
package aman.astau;
import android.accessibilityservice.AccessibilityService;
import android.app.NotificationManager;
import android.content.Context;
import android.app.NotificationChannel;
import android.app.Notification;
import android.os.Build;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;
import androidx.core.app.NotificationCompat;
public class MyAccessibilityService extends AccessibilityService {
private static final String CHANNEL_ID = "accessibility_service_channel";
private static final int NOTIFICATION_ID = 1;
@Override
public void onCreate() {
super.onCreate();
// Create the notification channel
createNotificationChannel();
// Create a persistent notification
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Accessibility Service")
.setContentText("The service is running in the background")
.setSmallIcon(android.R.drawable.ic_dialog_info)
.build();
// Start the service in the foreground
startForeground(NOTIFICATION_ID, notification);
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Toast.makeText(getApplicationContext(), "something happened", Toast.LENGTH_SHORT).show();
}
@Override
public void onInterrupt() {
// Handle interruptions (e.g., if the service is turned off)
Toast.makeText(getApplicationContext() , "interrupted" , 0).show();
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Accessibility Service Channel";
String description = "Channel for accessibility service";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
// Register the channel with the system
NotificationManager notificationManager = getSystemService(NotificationManager.class);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
}
}
}
Config
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="1000"
android:canRetrieveWindowContent="true"
android:canRequestFilterKeyEvents="true"
android:accessibilityFlags="flagDefault|flagReportViewIds|flagIncludeNotImportantViews"
android:description="@string/accessibility_service_description" />
I want it work like it worked in android 10
One thing to note - "Mt manager" or "current Activity" etc apps are able to display the whole class names of app
Upvotes: 0
Views: 27
Reputation: 1
It's my own question, so the problem is that code was(is) working fine for the purpose, but back then I relied on toast message for logging it worked in android 10 but in android 14, I guess toast message aren't displayed when application is minimised , afterwards I used Log
for checking and found it that it is already working fine.
TL;DR - use Log instead of Toast
Upvotes: 0