Merge "Revert "Revert "VoiceInputHelper should not show recognition service if it's not selectable as default""" into sc-dev am: f760ea0639

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/13785874

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0676b9e1c0ce3c46b54c9f632cd8c5d18884b545
This commit is contained in:
Victoria Lestari
2021-03-09 15:04:26 +00:00
committed by Automerger Merge Worker

View File

@@ -85,8 +85,14 @@ public final class VoiceInputHelper {
} }
static public class RecognizerInfo extends BaseInfo { static public class RecognizerInfo extends BaseInfo {
public RecognizerInfo(PackageManager pm, ServiceInfo _service, String _settings) { public final boolean mSelectableAsDefault;
super(pm, _service, _settings);
public RecognizerInfo(PackageManager pm,
ServiceInfo serviceInfo,
String settings,
boolean selectableAsDefault) {
super(pm, serviceInfo, settings);
this.mSelectableAsDefault = selectableAsDefault;
} }
} }
@@ -158,11 +164,11 @@ public final class VoiceInputHelper {
//continue; //continue;
} }
ServiceInfo si = resolveInfo.serviceInfo; ServiceInfo si = resolveInfo.serviceInfo;
XmlResourceParser parser = null;
String settingsActivity = null; String settingsActivity = null;
try { // Always show in voice input settings unless specifically set to False.
parser = si.loadXmlMetaData(mContext.getPackageManager(), boolean selectableAsDefault = true;
RecognitionService.SERVICE_META_DATA); try (XmlResourceParser parser = si.loadXmlMetaData(mContext.getPackageManager(),
RecognitionService.SERVICE_META_DATA)) {
if (parser == null) { if (parser == null) {
throw new XmlPullParserException("No " + RecognitionService.SERVICE_META_DATA + throw new XmlPullParserException("No " + RecognitionService.SERVICE_META_DATA +
" meta-data for " + si.packageName); " meta-data for " + si.packageName);
@@ -188,6 +194,9 @@ public final class VoiceInputHelper {
com.android.internal.R.styleable.RecognitionService); com.android.internal.R.styleable.RecognitionService);
settingsActivity = array.getString( settingsActivity = array.getString(
com.android.internal.R.styleable.RecognitionService_settingsActivity); com.android.internal.R.styleable.RecognitionService_settingsActivity);
selectableAsDefault = array.getBoolean(
com.android.internal.R.styleable.RecognitionService_selectableAsDefault,
true);
array.recycle(); array.recycle();
} catch (XmlPullParserException e) { } catch (XmlPullParserException e) {
Log.e(TAG, "error parsing recognition service meta-data", e); Log.e(TAG, "error parsing recognition service meta-data", e);
@@ -195,11 +204,13 @@ public final class VoiceInputHelper {
Log.e(TAG, "error parsing recognition service meta-data", e); Log.e(TAG, "error parsing recognition service meta-data", e);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "error parsing recognition service meta-data", e); Log.e(TAG, "error parsing recognition service meta-data", e);
} finally {
if (parser != null) parser.close();
} }
mAvailableRecognizerInfos.add(new RecognizerInfo(mContext.getPackageManager(), // The current recognizer must always be shown in the settings, whatever its
resolveInfo.serviceInfo, settingsActivity)); // selectableAsDefault value is.
if (selectableAsDefault || comp.equals(mCurrentRecognizer)) {
mAvailableRecognizerInfos.add(new RecognizerInfo(mContext.getPackageManager(),
resolveInfo.serviceInfo, settingsActivity, selectableAsDefault));
}
} }
Collections.sort(mAvailableRecognizerInfos); Collections.sort(mAvailableRecognizerInfos);
} }