From a133f0b522f66b45d4105f6d514a8a17120833ad Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Fri, 26 Jun 2015 16:40:00 -0700 Subject: Add setting to disable screenshot separately (1/2) Bug: 22063668 Change-Id: Ief704004a8ab0a65d34753f9098003ba695726df --- core/java/android/provider/Settings.java | 8 ++++++++ .../voiceinteraction/VoiceInteractionSessionConnection.java | 11 +++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 9b5fbfaf562a..cc569690cecd 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -5443,6 +5443,14 @@ public final class Settings { */ public static final String ASSIST_STRUCTURE_ENABLED = "assist_structure_enabled"; + /** + * Specifies whether a screenshot of the screen contents will be sent to the assist + * application (active voice interaction service). + * + * @hide + */ + public static final String ASSIST_SCREENSHOT_ENABLED = "assist_screenshot_enabled"; + /** * Names of the service components that the current user has explicitly allowed to * see all of the user's notifications, separated by ':'. diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionSessionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionSessionConnection.java index 549a511c98fa..bd043ac7655b 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionSessionConnection.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionSessionConnection.java @@ -198,8 +198,11 @@ final class VoiceInteractionSessionConnection implements ServiceConnection { isScreenCaptureAllowed = mAm.isScreenCaptureAllowedOnCurrentActivity(); } catch (RemoteException e) { } - boolean allDataEnabled = (Settings.Secure.getIntForUser(mContext.getContentResolver(), - Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1, mUser) != 0) + boolean structureEnabled = Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1, mUser) != 0 + && isScreenCaptureAllowed; + boolean screenshotEnabled = Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 1, mUser) != 0 && isScreenCaptureAllowed; mShowArgs = args; mShowFlags = flags; @@ -208,7 +211,7 @@ final class VoiceInteractionSessionConnection implements ServiceConnection { if ((flags& VoiceInteractionSession.SHOW_WITH_ASSIST) != 0) { if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ASSIST_STRUCTURE, mCallingUid, mSessionComponentName.getPackageName()) == AppOpsManager.MODE_ALLOWED - && allDataEnabled) { + && structureEnabled) { try { needDisclosure = true; mAm.requestAssistContextExtras(ActivityManager.ASSIST_CONTEXT_FULL, @@ -226,7 +229,7 @@ final class VoiceInteractionSessionConnection implements ServiceConnection { if ((flags& VoiceInteractionSession.SHOW_WITH_SCREENSHOT) != 0) { if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ASSIST_SCREENSHOT, mCallingUid, mSessionComponentName.getPackageName()) == AppOpsManager.MODE_ALLOWED - && allDataEnabled) { + && screenshotEnabled) { try { needDisclosure = true; mIWindowManager.requestAssistScreenshot(mScreenshotReceiver); -- cgit v1.2.3-59-g8ed1b