Loading services/core/java/com/android/server/appop/AppOpsService.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,7 @@ import static android.app.AppOpsManager.OP_FLAG_TRUSTED_PROXIED; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_PLAY_AUDIO; import static android.app.AppOpsManager.OP_PLAY_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO_HOTWORD; import static android.app.AppOpsManager.OpEventProxyInfo; import static android.app.AppOpsManager.OpEventProxyInfo; import static android.app.AppOpsManager.RestrictionBypass; import static android.app.AppOpsManager.RestrictionBypass; import static android.app.AppOpsManager.SAMPLING_STRATEGY_BOOT_TIME_SAMPLING; import static android.app.AppOpsManager.SAMPLING_STRATEGY_BOOT_TIME_SAMPLING; Loading Loading @@ -3415,6 +3416,18 @@ public class AppOpsService extends IAppOpsService.Stub { return AppOpsManager.MODE_IGNORED; return AppOpsManager.MODE_IGNORED; } } // As a special case for OP_RECORD_AUDIO_HOTWORD, which we use only for attribution // purposes and not as a check, also make sure that the caller is allowed to access // the data gated by OP_RECORD_AUDIO. // // TODO: Revert this change before Android 12. if (code == OP_RECORD_AUDIO_HOTWORD) { int result = checkOperation(OP_RECORD_AUDIO, uid, packageName); if (result != AppOpsManager.MODE_ALLOWED) { return result; } } RestrictionBypass bypass; RestrictionBypass bypass; try { try { bypass = verifyAndGetBypass(uid, packageName, attributionTag); bypass = verifyAndGetBypass(uid, packageName, attributionTag); Loading Loading
services/core/java/com/android/server/appop/AppOpsService.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,7 @@ import static android.app.AppOpsManager.OP_FLAG_TRUSTED_PROXIED; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_PLAY_AUDIO; import static android.app.AppOpsManager.OP_PLAY_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO_HOTWORD; import static android.app.AppOpsManager.OpEventProxyInfo; import static android.app.AppOpsManager.OpEventProxyInfo; import static android.app.AppOpsManager.RestrictionBypass; import static android.app.AppOpsManager.RestrictionBypass; import static android.app.AppOpsManager.SAMPLING_STRATEGY_BOOT_TIME_SAMPLING; import static android.app.AppOpsManager.SAMPLING_STRATEGY_BOOT_TIME_SAMPLING; Loading Loading @@ -3415,6 +3416,18 @@ public class AppOpsService extends IAppOpsService.Stub { return AppOpsManager.MODE_IGNORED; return AppOpsManager.MODE_IGNORED; } } // As a special case for OP_RECORD_AUDIO_HOTWORD, which we use only for attribution // purposes and not as a check, also make sure that the caller is allowed to access // the data gated by OP_RECORD_AUDIO. // // TODO: Revert this change before Android 12. if (code == OP_RECORD_AUDIO_HOTWORD) { int result = checkOperation(OP_RECORD_AUDIO, uid, packageName); if (result != AppOpsManager.MODE_ALLOWED) { return result; } } RestrictionBypass bypass; RestrictionBypass bypass; try { try { bypass = verifyAndGetBypass(uid, packageName, attributionTag); bypass = verifyAndGetBypass(uid, packageName, attributionTag); Loading