diff options
| -rw-r--r-- | core/java/android/permission/PermissionUsageHelper.java | 14 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java | 15 |
2 files changed, 27 insertions, 2 deletions
diff --git a/core/java/android/permission/PermissionUsageHelper.java b/core/java/android/permission/PermissionUsageHelper.java index 0e35ef98f1b7..4c9e77c35135 100644 --- a/core/java/android/permission/PermissionUsageHelper.java +++ b/core/java/android/permission/PermissionUsageHelper.java @@ -57,6 +57,8 @@ import android.util.ArraySet; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; +import com.android.internal.R; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -186,6 +188,15 @@ public class PermissionUsageHelper { == PackageManager.PERMISSION_GRANTED; } + private boolean isSpeechRecognizerUsage(String op, String packageName) { + if (!OPSTR_RECORD_AUDIO.equals(op)) { + return false; + } + + return packageName.equals( + mContext.getString(R.string.config_systemSpeechRecognizer)); + } + /** * @see PermissionManager.getIndicatorAppOpUsageData */ @@ -317,7 +328,8 @@ public class PermissionUsageHelper { if (packageName.equals(SYSTEM_PKG) || (!isUserSensitive(packageName, user, op) && !isLocationProvider(packageName, user) - && !isAppPredictor(packageName, user))) { + && !isAppPredictor(packageName, user)) + && !isSpeechRecognizerUsage(op, packageName)) { continue; } diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java index 79f0688db869..2040347de1b5 100644 --- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java @@ -40,6 +40,7 @@ import android.util.SparseArray; import androidx.annotation.WorkerThread; +import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.Dumpable; @@ -78,6 +79,7 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon private static final boolean DEBUG = false; private final BroadcastDispatcher mDispatcher; + private final Context mContext; private final AppOpsManager mAppOps; private final AudioManager mAudioManager; private final LocationManager mLocationManager; @@ -141,6 +143,7 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon mCameraDisabled = mSensorPrivacyController.isSensorBlocked(CAMERA); mLocationManager = context.getSystemService(LocationManager.class); mPackageManager = context.getPackageManager(); + mContext = context; dumpManager.registerDumpable(TAG, this); } @@ -357,6 +360,15 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon return mLocationProviderPackages.contains(packageName); } + private boolean isSpeechRecognizerUsage(int opCode, String packageName) { + if (AppOpsManager.OP_RECORD_AUDIO != opCode) { + return false; + } + + return packageName.equals( + mContext.getString(R.string.config_systemSpeechRecognizer)); + } + // TODO ntmyren: remove after teamfood is finished private boolean shouldShowAppPredictor(String pkgName) { if (!DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, "permissions_hub_2_enabled", @@ -388,7 +400,8 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon } // TODO ntmyren: Replace this with more robust check if this moves beyond teamfood if ((appOpCode == AppOpsManager.OP_CAMERA && isLocationProvider(packageName)) - || shouldShowAppPredictor(packageName)) { + || shouldShowAppPredictor(packageName) + || isSpeechRecognizerUsage(appOpCode, packageName)) { return true; } |