microg/GmsCore · error · IllegalStateException

Failed to initialize CastContext.

Error message

Failed to initialize CastContext.

What it means

Wraps failure in CastContext.getOptionsProvider: the OPTIONS_PROVIDER_CLASS_NAME metadata could not be read from the app manifest or the named provider class could not be instantiated, so CastOptions cannot be obtained during CastContext creation.

Source

Thrown at play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastContext.java:183

                if (map.containsKey(sessionProvider.getCategory()))
                    throw new IllegalArgumentException("SessionProvider for category " + sessionProvider.getCategory() + " already added");
                map.put(sessionProvider.getCategory(), sessionProvider.asBinder());
            }
        }
        return map;
    }

    private static OptionsProvider getOptionsProvider(Context context) {
        try {
            Bundle metaData = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA).metaData;
            String optionsProviderClassName = metaData.getString(OPTIONS_PROVIDER_CLASS_NAME_KEY);
            if (optionsProviderClassName != null) {
                return Class.forName(optionsProviderClassName).asSubclass(OptionsProvider.class).getDeclaredConstructor().newInstance();
            }
            throw new IllegalStateException("The fully qualified name of the implementation of OptionsProvider must be provided as a metadata in the AndroidManifest.xml with key com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME.");
        } catch (PackageManager.NameNotFoundException | ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException |
                 InvocationTargetException | NullPointerException e) {
            throw new IllegalStateException("Failed to initialize CastContext.", e);
        }
    }

    @NonNull
    DiscoveryManager getDiscoveryManager() {
        return discoveryManager;
    }
}

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Verify the OPTIONS_PROVIDER_CLASS_NAME metadata value matches a real, public, no-arg-instantiable class
  2. Ensure the class implements CastContext.OptionsProvider
  3. Catch the IllegalStateException and run without cast options
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastContext.java:183 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/71c6a0fc0f04e442. Report an issue: GitHub.