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 170574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganovpackage android.support.v4.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/** 250574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link android.accessibilityservice.AccessibilityService} 260574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityServiceInfoCompat { 299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static interface AccessibilityServiceInfoVersionImpl { 319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getId(AccessibilityServiceInfo info); 329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public ResolveInfo getResolveInfo(AccessibilityServiceInfo info); 339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info); 349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getDescription(AccessibilityServiceInfo info); 359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getSettingsActivityName(AccessibilityServiceInfo info); 369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityServiceInfoStubImpl implements AccessibilityServiceInfoVersionImpl { 399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { 419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getDescription(AccessibilityServiceInfo info) { 459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getId(AccessibilityServiceInfo info) { 499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { 539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getSettingsActivityName(AccessibilityServiceInfo info) { 579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityServiceInfoIcsImpl extends AccessibilityServiceInfoStubImpl { 629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { 659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getCanRetrieveWindowContent(info); 669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getDescription(AccessibilityServiceInfo info) { 709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getDescription(info); 719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getId(AccessibilityServiceInfo info) { 759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getId(info); 769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { 809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getResolveInfo(info); 819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public String getSettingsActivityName(AccessibilityServiceInfo info) { 859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityServiceInfoCompatIcs.getSettingsActivityName(info); 869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static { 909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov if (Build.VERSION.SDK_INT >= 14) { // ICS 919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityServiceInfoIcsImpl(); 929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } else { 939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityServiceInfoStubImpl(); 949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final AccessibilityServiceInfoVersionImpl IMPL; 989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Mask for all feedback types. 1019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_SPOKEN 1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_HAPTIC 1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_AUDIBLE 1059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_VISUAL 1069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see AccessibilityServiceInfo#FEEDBACK_GENERIC 1079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static final int FEEDBACK_ALL_MASK = 0xFFFFFFFF; 1099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /* 1119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Hide constructor 1129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private AccessibilityServiceInfoCompat() { 1149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The accessibility service id. 1199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Generated by the system.</strong> 1219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The id. 1249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String getId(AccessibilityServiceInfo info) { 1269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getId(info); 1279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The service {@link ResolveInfo}. 1319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Generated by the system.</strong> 1339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The info. 1369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { 1389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getResolveInfo(info); 1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The settings activity name. 1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Statically set from {@link AccessibilityService#SERVICE_META_DATA 1459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * meta-data}.</strong> 1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The settings activity name. 1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String getSettingsActivityName(AccessibilityServiceInfo info) { 1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getSettingsActivityName(info); 1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Whether this service can retrieve the current window's content. 1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Statically set from {@link AccessibilityService#SERVICE_META_DATA 1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * meta-data}.</strong> 1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True window content can be retrieved. 1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { 1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getCanRetrieveWindowContent(info); 1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Description of the accessibility service. 1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <strong>Statically set from {@link AccessibilityService#SERVICE_META_DATA 1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * meta-data}.</strong> 1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The description. 1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String getDescription(AccessibilityServiceInfo info) { 1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.getDescription(info); 1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Returns the string representation of a feedback type. For example, 1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link AccessibilityServiceInfo#FEEDBACK_SPOKEN} is represented by the 1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * string FEEDBACK_SPOKEN. 1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param feedbackType The feedback type. 1869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The string representation. 1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String feedbackTypeToString(int feedbackType) { 1891295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov StringBuilder builder = new StringBuilder(); 1901295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("["); 1911295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov while (feedbackType > 0) { 1921295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov final int feedbackTypeFlag = 1 << Integer.numberOfTrailingZeros(feedbackType); 1931295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov feedbackType &= ~feedbackTypeFlag; 1941295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov if (builder.length() > 1) { 1951295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append(", "); 1961295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov } 1971295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov switch (feedbackTypeFlag) { 1981295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_AUDIBLE: 1991295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_AUDIBLE"); 2001295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2011295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_HAPTIC: 2021295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_HAPTIC"); 2031295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2041295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_GENERIC: 2051295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_GENERIC"); 2061295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2071295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_SPOKEN: 2081295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_SPOKEN"); 2091295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2101295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov case AccessibilityServiceInfo.FEEDBACK_VISUAL: 2111295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("FEEDBACK_VISUAL"); 2121295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov break; 2131295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov } 2149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2151295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov builder.append("]"); 2161295792da760a6baca24d95f2a7975eec1c2b08aSvetoslav Ganov return builder.toString(); 2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 2209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Returns the string representation of a flag. For example, 2219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link AccessibilityServiceInfo#DEFAULT} is represented by the 2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * string DEFAULT. 2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 2249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param flag The flag. 2259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The string representation. 2269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 2279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static String flagToString(int flag) { 2289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov switch (flag) { 2299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov case AccessibilityServiceInfo.DEFAULT: 2309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return "DEFAULT"; 2319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov default: 2329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 2339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov} 236