@@ -65,7 +65,7 @@ public class TouchHelperServiceImpl {
6565 private PackageManager packageManager ;
6666 private String currentPackageName , currentActivityName ;
6767 private String packageName ;
68- private Set <String > pkgLaunchers , pkgWhiteList ;
68+ private Set <String > pkgLaunchers , pkgIMEApps , pkgHomes , pkgWhiteList ;
6969 private List <String > keyWordList ;
7070
7171 private Map <String , PackagePositionDescription > mapPackagePositions ;
@@ -237,6 +237,12 @@ public void onAccessibilityEvent(AccessibilityEvent event) {
237237 CharSequence tempPkgName = event .getPackageName ();
238238 CharSequence tempClassName = event .getClassName ();
239239
240+ if (tempPkgName != null && pkgIMEApps .contains (tempPkgName )) {
241+ // this means IME is started in one app, so we will stop skipping process
242+ // ignore this event;
243+ break ;
244+ }
245+
240246 if (tempPkgName == null || tempClassName == null ) {
241247// currentPackageName = "initial package";
242248// currentActivityName = "initial activity";
@@ -607,38 +613,37 @@ private void updatePackage() {
607613// Log.d(TAG, "updatePackage");
608614
609615 pkgLaunchers = new HashSet <>();
610- // Set<String> pkgHomes = new HashSet<>();
616+ pkgIMEApps = new HashSet <>();
617+ pkgHomes = new HashSet <>();
611618 Set <String > pkgTemps = new HashSet <>();
612619
613620 // find all launchers
614621 Intent intent = new Intent (Intent .ACTION_MAIN ).addCategory (Intent .CATEGORY_LAUNCHER );
615622 List <ResolveInfo > ResolveInfoList = packageManager .queryIntentActivities (intent , PackageManager .MATCH_ALL );
616623 for (ResolveInfo e : ResolveInfoList ) {
617- // Log.d(TAG, "launcher - " + e.activityInfo.packageName);
618624 pkgLaunchers .add (e .activityInfo .packageName );
619625 }
620626 // find all homes
621627 intent = new Intent (Intent .ACTION_MAIN ).addCategory (Intent .CATEGORY_HOME );
622628 ResolveInfoList = packageManager .queryIntentActivities (intent , PackageManager .MATCH_ALL );
623629 for (ResolveInfo e : ResolveInfoList ) {
624- //// Log.d(TAG, "homes - " + e.activityInfo.packageName);
625- pkgTemps .add (e .activityInfo .packageName );
630+ pkgHomes .add (e .activityInfo .packageName );
626631 }
627632 // find all input methods
628633 List <InputMethodInfo > inputMethodInfoList = ((InputMethodManager ) service .getSystemService (AccessibilityService .INPUT_METHOD_SERVICE )).getInputMethodList ();
629634 for (InputMethodInfo e : inputMethodInfoList ) {
630- //// Log.d(TAG, "IME - " + e.getPackageName());
631- pkgTemps .add (e .getPackageName ());
635+ pkgIMEApps .add (e .getPackageName ());
632636 }
637+
633638 // ignore some packages in hardcoded way
634639 // https://support.google.com/a/answer/7292363?hl=en
635- pkgTemps .add (packageName );
640+ pkgTemps .add (this . packageName );
636641 pkgTemps .add ("com.android.settings" );
637642
638643 // remove whitelist, systems, homes & ad-hoc packages from pkgLaunchers
639644 pkgLaunchers .removeAll (pkgWhiteList );
640- // pkgLaunchers.removeAll(pkgHomes);
641- pkgLaunchers .removeAll (pkgTemps );
645+ pkgLaunchers .removeAll (pkgHomes );
646+ pkgLaunchers .removeAll (pkgIMEApps );
642647// Log.d(TAG, "Working List = " + pkgLaunchers.toString());
643648 }
644649
0 commit comments