Skip to content

Commit 4e367f0

Browse files
committed
Add false positive tracking to the accessability warning
1 parent cd59a1e commit 4e367f0

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

android/app/src/main/java/com/cleverraven/cataclysmdda/CataclysmDDA_Helpers.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.cleverraven.cataclysmdda;
22

3+
import java.util.HashSet;
34
import java.util.List;
5+
import java.util.Set;
46

57
import android.content.Context;
68
import android.view.accessibility.AccessibilityManager;
79
import android.accessibilityservice.AccessibilityService;
810
import android.accessibilityservice.AccessibilityServiceInfo;
911
import android.content.pm.ServiceInfo;
12+
import android.content.SharedPreferences;
1013
import android.widget.Toast;
1114

1215
public class CataclysmDDA_Helpers {
@@ -19,11 +22,27 @@ public static List<AccessibilityServiceInfo> getEnabledAccessibilityServiceInfo(
1922
public static String getEnabledAccessibilityServiceNames(Context context) {
2023
List<AccessibilityServiceInfo> enabledServicesInfo = getEnabledAccessibilityServiceInfo( context );
2124
String service_names = "";
25+
Set<String> false_positives = context.getSharedPreferences("accessibility_service_info", Context.MODE_PRIVATE).getStringSet("accessibility_service_info_false_positives", new HashSet<String>());
2226
for (AccessibilityServiceInfo enabledService : enabledServicesInfo) {
2327
ServiceInfo enabledServiceInfo = enabledService.getResolveInfo().serviceInfo;
2428
String service_name = enabledServiceInfo.name;
25-
service_names = service_names + "\n" + service_name;
29+
if( !false_positives.contains( service_name ) ) {
30+
service_names = service_names + "\n" + service_name;
31+
}
2632
}
2733
return service_names;
2834
}
35+
36+
public static void saveAccessibilityServiceInfoFalsePositives(Context context) {
37+
List<AccessibilityServiceInfo> enabledServicesInfo = getEnabledAccessibilityServiceInfo( context );
38+
SharedPreferences preferences = context.getSharedPreferences("accessibility_service_info", Context.MODE_PRIVATE);
39+
Set<String> false_positives = preferences.getStringSet("accessibility_service_info_false_positives", new HashSet<String>());
40+
for (AccessibilityServiceInfo enabledService : enabledServicesInfo) {
41+
ServiceInfo enabledServiceInfo = enabledService.getResolveInfo().serviceInfo;
42+
false_positives.add( enabledServiceInfo.name );
43+
}
44+
SharedPreferences.Editor editor = preferences.edit();
45+
editor.putStringSet("accessibility_service_info_false_positives", false_positives);
46+
editor.commit();
47+
}
2948
}

android/app/src/main/java/com/cleverraven/cataclysmdda/SplashScreen.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,13 @@ public void onClick(DialogInterface dialog, int id) {
162162
dialog.dismiss();
163163
return;
164164
}
165+
})
166+
.setNeutralButton(getString(R.string.ignoreFalsePostives), new DialogInterface.OnClickListener() {
167+
public void onClick(DialogInterface dialog, int id) {
168+
CataclysmDDA_Helpers.saveAccessibilityServiceInfoFalsePositives(getApplicationContext());
169+
SplashScreen.this.installOrRun();
170+
return;
171+
}
165172
}).create();
166173
}
167174

android/app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<string name="helpMessage">"Swipe" for directional movement (hold for virtual joystick). "Tap" to confirm selection in menu or Pause one turn in-game (hold to Pause several turns in-game). "Double tap" to cancel or go back in menus (works like Escape key). "Pinch" to zoom in/out (in-game). Use hardware "Back" button to toggle virtual keyboard (hold to toggle keyboard shortcuts).</string>
77
<string name="accessibilityServicesTitle">Accessibility Services Warning</string>
88
<string name="accessibilityServicesMessage">If swipe commands and shortcuts menus are not working in game, you might want to disable one of the following accessibility services/software that interact with touchscreen (swipe assists, auto-clickers, one-handed mode, etc.):\n%1$s</string>
9+
<string name="ignoreFalsePostives">Mark as false positives</string>
910
<string name="softwareRendering">Software rendering</string>
1011
<string name="forceFullscreen">Force fullscreen</string>
1112
<string name="trapBackButton">Trap Back button</string>

0 commit comments

Comments
 (0)