diff --git a/res/values/strings.xml b/res/values/strings.xml index 8e4f6ccc842..fa17aabd5fa 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6955,6 +6955,11 @@ Allow the assist app to access an image of the screen + + Flash screen + + + Flash edges of screen when assist app accesses text from screen or screenshot Assist apps can help you based on information from the screen you\u2019re viewing. Some apps support both launcher and voice input services to give you integrated assistance. @@ -7763,4 +7768,5 @@ %1$s total made available\n\nLast ran on %2$s + diff --git a/res/xml/manage_assist.xml b/res/xml/manage_assist.xml index 6984f88c590..7d4928da35d 100644 --- a/res/xml/manage_assist.xml +++ b/res/xml/manage_assist.xml @@ -36,6 +36,12 @@ android:title="@string/assist_access_screenshot_title" android:summary="@string/assist_access_screenshot_summary"/> + + { + guardScreenshotPref(); + guardFlashPref(); + }); return true; } if (preference == mScreenshotPref) { @@ -84,6 +94,11 @@ public class ManageAssist extends SettingsPreferenceFragment (boolean) newValue ? 1 : 0); return true; } + if (preference == mFlashPref) { + Settings.Secure.putInt(getContentResolver(), Settings.Secure.ASSIST_DISCLOSURE_ENABLED, + (boolean) newValue ? 1 : 0); + return true; + } if (preference == mDefaultAssitPref) { String newAssitPackage = (String)newValue; if (newAssitPackage == null || @@ -101,15 +116,6 @@ public class ManageAssist extends SettingsPreferenceFragment return false; } - private void postGuardScreenshotPref() { - mHandler.post(new Runnable() { - @Override - public void run() { - guardScreenshotPref(); - } - }); - } - private void guardScreenshotPref() { boolean isChecked = mContextPref.isChecked(); boolean screenshotPrefWasSet = Settings.Secure.getInt( @@ -118,6 +124,17 @@ public class ManageAssist extends SettingsPreferenceFragment mScreenshotPref.setChecked(isChecked && screenshotPrefWasSet); } + private void guardFlashPref() { + ComponentName assistant = mDefaultAssitPref.getCurrentAssist(); + + boolean isContextChecked = mContextPref.isChecked(); + boolean willShowFlash = AssistUtils.shouldDisclose(getContext(), assistant); + boolean isSystemAssistant = AssistUtils.isPreinstalledAssistant(getContext(), assistant); + + mFlashPref.setEnabled(isContextChecked && isSystemAssistant); + mFlashPref.setChecked(willShowFlash); + } + private void updateUi() { mDefaultAssitPref.refreshAssistApps(); mVoiceInputPref.refreshVoiceInputs(); @@ -130,6 +147,13 @@ public class ManageAssist extends SettingsPreferenceFragment } else { getPreferenceScreen().removePreference(mContextPref); getPreferenceScreen().removePreference(mScreenshotPref); + getPreferenceScreen().removePreference(mFlashPref); + } + + if (hasAssistant && AssistUtils.allowDisablingAssistDisclosure(getContext())) { + getPreferenceScreen().addPreference(mFlashPref); + } else { + getPreferenceScreen().removePreference(mFlashPref); } if (isCurrentAssistVoiceService()) { @@ -140,6 +164,7 @@ public class ManageAssist extends SettingsPreferenceFragment } guardScreenshotPref(); + guardFlashPref(); } private boolean isCurrentAssistVoiceService() {