Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de0bfdb3 authored by Victoria Lestari's avatar Victoria Lestari
Browse files

Revert "Revert "VoiceInputHelper should not show recognition service if it's...

Revert "Revert "VoiceInputHelper should not show recognition service if it's not selectable as default""

This reverts commit 9516314d.

Reason for revert: I submitted ag/13740889 too early. Now that ag/13700299 has been submitted, I want to re-submit this change.

Bug: 175429607

Tested: on device

Change-Id: Iac1363ca4745636b8133f38fcc43e77444c6c1e6
parent 9516314d
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -85,8 +85,14 @@ public final class VoiceInputHelper {
    }

    static public class RecognizerInfo extends BaseInfo {
        public RecognizerInfo(PackageManager pm, ServiceInfo _service, String _settings) {
            super(pm, _service, _settings);
        public final boolean mSelectableAsDefault;

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