1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package foo.bar.proxy; 18 19 import static android.accessibilityservice.cts.utils.MultiProcessUtils.ACCESSIBILITY_SERVICE_STATE; 20 import static android.accessibilityservice.cts.utils.MultiProcessUtils.EXTRA_ENABLED; 21 import static android.accessibilityservice.cts.utils.MultiProcessUtils.EXTRA_ENABLED_SERVICES; 22 import static android.accessibilityservice.cts.utils.MultiProcessUtils.SEPARATE_PROCESS_ACTIVITY_TITLE; 23 import static android.accessibilityservice.cts.utils.MultiProcessUtils.TOUCH_EXPLORATION_STATE; 24 25 import android.accessibilityservice.AccessibilityServiceInfo; 26 import android.app.Activity; 27 import android.content.Intent; 28 import android.os.Bundle; 29 import android.view.accessibility.AccessibilityManager; 30 31 import java.util.List; 32 33 /** 34 * Activity used in AccessibilityDisplayProxyTest. 35 */ 36 public class NonProxySeparateAppActivity extends Activity { 37 @Override onCreate(Bundle savedInstanceState)38 public void onCreate(Bundle savedInstanceState) { 39 super.onCreate(savedInstanceState); 40 setContentView(R.layout.non_proxy_separate_app_activity); 41 setTitle(SEPARATE_PROCESS_ACTIVITY_TITLE); 42 final AccessibilityManager a11yManager = getSystemService(AccessibilityManager.class); 43 final AccessibilityManager.AccessibilityServicesStateChangeListener 44 servicesStateChangeListener = manager -> { 45 final List<AccessibilityServiceInfo> enabled = 46 manager.getEnabledAccessibilityServiceList( 47 AccessibilityServiceInfo.FEEDBACK_ALL_MASK); 48 final CharSequence[] enabledServiceList = new CharSequence[enabled.size()]; 49 for (int i = 0; i < enabled.size(); i++) { 50 enabledServiceList[i] = enabled.get(i).getResolveInfo().serviceInfo.name; 51 } 52 sendBroadcast(createIntentWithAction(ACCESSIBILITY_SERVICE_STATE) 53 .putExtra(EXTRA_ENABLED_SERVICES, enabledServiceList.clone())); 54 }; 55 56 final AccessibilityManager.TouchExplorationStateChangeListener touchExplorationListener = 57 enabled -> sendBroadcast(createIntentWithAction(TOUCH_EXPLORATION_STATE) 58 .putExtra(EXTRA_ENABLED, enabled)); 59 60 a11yManager.addAccessibilityServicesStateChangeListener(servicesStateChangeListener); 61 a11yManager.addTouchExplorationStateChangeListener(touchExplorationListener); 62 } 63 createIntentWithAction(String broadcastAction)64 private Intent createIntentWithAction(String broadcastAction) { 65 return new Intent(broadcastAction) 66 .setFlags(Intent.FLAG_RECEIVER_FOREGROUND); 67 } 68 } 69