Make performAccessibilityShortcut a SystemAPI
Also create a new MANAGE_ACCESSIBILITY permission to perform the shortcut. Bug: 116118615 Test: make, activate accessibility shortcut Change-Id: Ic65a0cdf7393429e14cb98f4fb0734d20069b05a
This commit is contained in:
@@ -6038,6 +6038,7 @@ public final class Settings {
|
||||
* shortcut. Must be its flattened {@link ComponentName}.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public static final String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE =
|
||||
"accessibility_shortcut_target_service";
|
||||
|
||||
|
||||
@@ -23,8 +23,11 @@ import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.accessibilityservice.AccessibilityServiceInfo.FeedbackType;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.SdkConstant;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.SystemService;
|
||||
import android.annotation.TestApi;
|
||||
import android.annotation.UnsupportedAppUsage;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -204,6 +207,7 @@ public final class AccessibilityManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public interface AccessibilityServicesStateChangeListener {
|
||||
|
||||
/**
|
||||
@@ -778,6 +782,7 @@ public final class AccessibilityManager {
|
||||
* for a callback on the process's main handler.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public void addAccessibilityServicesStateChangeListener(
|
||||
@NonNull AccessibilityServicesStateChangeListener listener, @Nullable Handler handler) {
|
||||
synchronized (mLock) {
|
||||
@@ -793,6 +798,7 @@ public final class AccessibilityManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public void removeAccessibilityServicesStateChangeListener(
|
||||
@NonNull AccessibilityServicesStateChangeListener listener) {
|
||||
synchronized (mLock) {
|
||||
@@ -1056,6 +1062,9 @@ public final class AccessibilityManager {
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@TestApi
|
||||
@RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
|
||||
public void performAccessibilityShortcut() {
|
||||
final IAccessibilityManager service;
|
||||
synchronized (mLock) {
|
||||
@@ -1139,6 +1148,30 @@ public final class AccessibilityManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the component name of the service currently assigned to the accessibility shortcut.
|
||||
*
|
||||
* @return The flattened component name
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(Manifest.permission.MANAGE_ACCESSIBILITY)
|
||||
@Nullable
|
||||
public String getAccessibilityShortcutService() {
|
||||
final IAccessibilityManager service;
|
||||
synchronized (mLock) {
|
||||
service = getServiceLocked();
|
||||
}
|
||||
if (service != null) {
|
||||
try {
|
||||
return service.getAccessibilityShortcutService();
|
||||
} catch (RemoteException re) {
|
||||
re.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private IAccessibilityManager getServiceLocked() {
|
||||
if (mService == null) {
|
||||
tryConnectToServiceLocked(null);
|
||||
|
||||
@@ -67,9 +67,12 @@ interface IAccessibilityManager {
|
||||
|
||||
void notifyAccessibilityButtonVisibilityChanged(boolean available);
|
||||
|
||||
// Requires WRITE_SECURE_SETTINGS
|
||||
// Requires Manifest.permission.MANAGE_ACCESSIBILITY
|
||||
void performAccessibilityShortcut();
|
||||
|
||||
// Requires Manifest.permission.MANAGE_ACCESSIBILITY
|
||||
String getAccessibilityShortcutService();
|
||||
|
||||
// System process only
|
||||
boolean sendFingerprintGesture(int gestureKeyCode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user