Dan Tanner
Dan Tanner

Reputation: 2444

How to enable Android Open Application voice interaction

According to the system voice command docs, you can open an application with a voice command. e.g. OK Google - open foobar. Also according to the docs, this Works by default; no specific intent.
In my sample development app, this isn't working. I've tried adding a few combinations of action and category permutations to the intent-filter, but no luck so far.
I'm targeting a minimum SDK of 23, testing on a device with 6.0.1.

Should this work, and if so, what are the changes to a new empty activity project I need to enable it?

Upvotes: 3

Views: 2103

Answers (1)

brandall
brandall

Reputation: 6144

As far as I am aware, Google simply iterates over a list of installed applications and opens the corresponding application if it finds an exact match.

To test this, use the following Intent

        final String PACKAGE_NAME_GOOGLE_NOW = "com.google.android.googlequicksearchbox";
        final String GOOGLE_NOW_SEARCH_ACTIVITY = ".SearchActivity";
        final String APP_NAME = "Open " +getString(R.string.app_name);

        final Intent startMyAppIntent = new Intent(Intent.ACTION_WEB_SEARCH);
        startMyAppIntent.setComponent(new ComponentName(PACKAGE_NAME_GOOGLE_NOW,
                PACKAGE_NAME_GOOGLE_NOW + GOOGLE_NOW_SEARCH_ACTIVITY));

        startMyAppIntent.putExtra(SearchManager.QUERY, APP_NAME);
        startMyAppIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            startActivity(startMyAppIntent);
        } catch (final ActivityNotFoundException e) {
            e.printStackTrace();
        }

If this opens your application, then it is simply a case of the phonetics of your application name, or how Google interprets your pronunciation of it.

I do think that there should be an option to add a 'phonetic app label' to the application's manifest (or some other globally available configuration file), so Google could open your application if the unique name is not common enough to generate a voice search result.

If this doesn't open your application, check that you are correctly defining your application name in the manifest as follows:

<application
    android:label="@string/app_name"

Upvotes: 1

Related Questions