AccessibilityServiceInfoCompat.java revision 1295792da760a6baca24d95f2a7975eec1c2b08a
19648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/* 29648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Copyright (C) 2011 The Android Open Source Project 39648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 49648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 59648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * you may not use this file except in compliance with the License. 69648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * You may obtain a copy of the License at 79648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 89648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 99648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software 119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * See the License for the specific language governing permissions and 149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * limitations under the License. 159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpackage android.support.v4.android.accessibilityservice; 189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.accessibilityservice.AccessibilityService; 209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.accessibilityservice.AccessibilityServiceInfo; 219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.content.pm.ResolveInfo; 229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.os.Build; 239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/** 259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Helper for accessing newer features in AccessibilityServiceInfo. 269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityServiceInfoCompat { 289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static interface AccessibilityServiceInfoVersionImpl { 309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getId(AccessibilityServiceInfo info); 319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public ResolveInfo getResolveInfo(AccessibilityServiceInfo info); 329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info); 339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getDescription(AccessibilityServiceInfo info); 349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getSettingsActivityName(AccessibilityServiceInfo info); 359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityServiceInfoStubImpl implements AccessibilityServiceInfoVersionImpl { 389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { 409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getDescription(AccessibilityServiceInfo info) { 449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getId(AccessibilityServiceInfo info) { 489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { 529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getSettingsActivityName(AccessibilityServiceInfo info) { 569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityServiceInfoIcsImpl extends AccessibilityServiceInfoStubImpl { 619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { 649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getCanRetrieveWindowContent(info); 659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getDescription(AccessibilityServiceInfo info) { 699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getDescription(info); 709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getId(AccessibilityServiceInfo info) { 749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getId(info); 759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { 799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getResolveInfo(info); 809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getSettingsActivityName(AccessibilityServiceInfo info) { 849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getSettingsActivityName(info); 859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static { 899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov if (Build.VERSION.SDK_INT >= 14) { // ICS 909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityServiceInfoIcsImpl(); 919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } else { 929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityServiceInfoStubImpl(); 939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final AccessibilityServiceInfoVersionImpl IMPL; 979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Mask for all feedback types. 1009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_SPOKEN 1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_HAPTIC 1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_AUDIBLE 1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_VISUAL 1059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_GENERIC 1069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int FEEDBACK_ALL_MASK = 0xFFFFFFFF; 1089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /* 1109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Hide constructor 1119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private AccessibilityServiceInfoCompat() { 1139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The accessibility service id. 1189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Generated by the system.</strong> 1209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The id. 1239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String getId(AccessibilityServiceInfo info) { 1259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getId(info); 1269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The service {@link ResolveInfo}. 1309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Generated by the system.</strong> 1329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The info. 1359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { 1379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getResolveInfo(info); 1389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The settings activity name. 1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Statically set from {@link AccessibilityService#SERVICE_META_DATA 1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * meta-data}.</strong> 1459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The settings activity name. 1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String getSettingsActivityName(AccessibilityServiceInfo info) { 1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getSettingsActivityName(info); 1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Whether this service can retrieve the current window's content. 1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Statically set from {@link AccessibilityService#SERVICE_META_DATA 1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * meta-data}.</strong> 1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True window content can be retrieved. 1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { 1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getCanRetrieveWindowContent(info); 1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Description of the accessibility service. 1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Statically set from {@link AccessibilityService#SERVICE_META_DATA 1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * meta-data}.</strong> 1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The description. 1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String getDescription(AccessibilityServiceInfo info) { 1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getDescription(info); 1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Returns the string representation of a feedback type. For example, 1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link AccessibilityServiceInfo#FEEDBACK_SPOKEN} is represented by the 1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * string FEEDBACK_SPOKEN. 1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param feedbackType The feedback type. 1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The string representation. 1869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String feedbackTypeToString(int feedbackType) { 1881295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov StringBuilder builder = new StringBuilder(); 1891295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("["); 1901295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov while (feedbackType > 0) { 1911295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov final int feedbackTypeFlag = 1 << Integer.numberOfTrailingZeros(feedbackType); 1921295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov feedbackType &= ~feedbackTypeFlag; 1931295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov if (builder.length() > 1) { 1941295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append(", "); 1951295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov } 1961295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov switch (feedbackTypeFlag) { 1971295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_AUDIBLE: 1981295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_AUDIBLE"); 1991295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2001295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_HAPTIC: 2011295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_HAPTIC"); 2021295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2031295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_GENERIC: 2041295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_GENERIC"); 2051295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2061295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_SPOKEN: 2071295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_SPOKEN"); 2081295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2091295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_VISUAL: 2101295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_VISUAL"); 2111295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2121295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov } 2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2141295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("]"); 2151295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov return builder.toString(); 2169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 2199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Returns the string representation of a flag. For example, 2209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link AccessibilityServiceInfo#DEFAULT} is represented by the 2219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * string DEFAULT. 2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param flag The flag. 2249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The string representation. 2259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 2269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String flagToString(int flag) { 2279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov switch (flag) { 2289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov case AccessibilityServiceInfo.DEFAULT: 2299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return "DEFAULT"; 2309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov default: 2319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 2329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov} 235