GoogleApiAvailability
public class GoogleApiAvailability
Helper class for verifying that the Google Play services APK is available and up-to-date on this device.
Summary
Constants |
|
|---|---|
static final @NonNull String |
GOOGLE_PLAY_SERVICES_PACKAGE = "com.google.android.gms"Package name for Google Play services. |
static final int |
Google Play services client library version (declared in library's AndroidManifest.xml android:versionCode). |
Public methods |
|
|---|---|
@NonNull Task<Void> |
checkApiAvailability(GoogleApi<Object> api, GoogleApi[] apis)Checks the availability of the specified APIs. |
@NonNull Task<Void> |
checkApiAvailability(HasApiKey<Object> api, HasApiKey[] apis)Checks the availability of the specified APIs. |
@Nullable Dialog |
getErrorDialog(Activity activity, int errorCode, int requestCode)Returns a dialog to address the provided |
@Nullable Dialog |
getErrorDialog(Fragment fragment, int errorCode, int requestCode)Returns a dialog to address the provided |
@Nullable Dialog |
getErrorDialog(Returns a dialog to address the provided |
@Nullable Dialog |
getErrorDialog(Returns a dialog to address the provided |
@Nullable PendingIntent |
getErrorResolutionPendingIntent(Returns a PendingIntent to address the provided connection failure. |
@Nullable PendingIntent |
getErrorResolutionPendingIntent(Returns a PendingIntent to address the provided errorCode. |
final @NonNull String |
getErrorString(int errorCode)Returns a human-readable string of the error code returned from |
static @NonNull GoogleApiAvailability |
Returns the singleton instance of GoogleApiAvailability. |
int |
isGooglePlayServicesAvailable(Context context)Verifies that Google Play services is installed and enabled on this device, and that the version installed on this device is no older than the one required by this client. |
final boolean |
isUserResolvableError(int errorCode)Determines whether an error can be resolved via user action. |
@NonNull Task<Void> |
Attempts to make Google Play services available on this device. |
void |
@TargetApi(value = Build.VERSION_CODES.O)Overrides the default notification channel for Google Play services availability notifications. |
boolean |
showErrorDialogFragment(Displays a |
boolean |
showErrorDialogFragment(Displays a |
boolean |
showErrorDialogFragment(Displays a |
void |
showErrorNotification(Context context, int errorCode)Displays a notification for an error code returned from |
void |
showErrorNotification(Context context, ConnectionResult result)Displays a notification for a connection failure, if it is resolvable by the user. |
Constants
GOOGLE_PLAY_SERVICES_PACKAGE
public static final @NonNull String GOOGLE_PLAY_SERVICES_PACKAGE = "com.google.android.gms"
Package name for Google Play services.
GOOGLE_PLAY_SERVICES_VERSION_CODE
public static final int GOOGLE_PLAY_SERVICES_VERSION_CODE
Google Play services client library version (declared in library's AndroidManifest.xml android:versionCode).
Public methods
checkApiAvailability
public @NonNull Task<Void> checkApiAvailability(GoogleApi<Object> api, GoogleApi[] apis)
Checks the availability of the specified APIs.
If at least one of the APIs is unavailable, the task will fail with a , which can be queried for individual API availability.
| See also | |
|---|---|
AvailabilityException |
checkApiAvailability
public @NonNull Task<Void> checkApiAvailability(HasApiKey<Object> api, HasApiKey[] apis)
Checks the availability of the specified APIs.
If at least one of the APIs is unavailable, the task will fail with a , which can be queried for individual API availability.
| See also | |
|---|---|
AvailabilityException |
getErrorDialog
public @Nullable Dialog getErrorDialog(Activity activity, int errorCode, int requestCode)
Returns a dialog to address the provided errorCode. The returned dialog displays a localized message about the error and upon user confirmation (by tapping on dialog) will direct them to the Play Store if Google Play services is out of date or missing, or to system settings if Google Play services is disabled on the device. This method follows the startActivityForResult and onActivityResult API pattern. Consider migrating to showErrorDialogFragment as the androidx.activity.result.contract.ActivityResultContracts API is the recommended approach.
| Parameters | |
|---|---|
Activity activity |
parent activity for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
int requestCode |
The number given when calling |
| See also | |
|---|---|
showErrorDialogFragment |
getErrorDialog
public @Nullable Dialog getErrorDialog(Fragment fragment, int errorCode, int requestCode)
Returns a dialog to address the provided errorCode. The returned dialog displays a localized message about the error and upon user confirmation (by tapping on dialog) will direct them to the Play Store if Google Play services is out of date or missing, or to system settings if Google Play services is disabled on the device. This method follows the startActivityForResult and onActivityResult API pattern. Consider migrating to showErrorDialogFragment as the androidx.activity.result.contract.ActivityResultContracts API is the recommended approach.
| Parameters | |
|---|---|
Fragment fragment |
parent fragment for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
int requestCode |
The number given when calling |
| See also | |
|---|---|
showErrorDialogFragment |
getErrorDialog
public @Nullable Dialog getErrorDialog(
Activity activity,
int errorCode,
int requestCode,
@Nullable DialogInterface.OnCancelListener cancelListener
)
Returns a dialog to address the provided errorCode. The returned dialog displays a localized message about the error and upon user confirmation (by tapping on dialog) will direct them to the Play Store if Google Play services is out of date or missing, or to system settings if Google Play services is disabled on the device. This method follows the startActivityForResult and onActivityResult API pattern. Consider migrating to showErrorDialogFragment as the androidx.activity.result.contract.ActivityResultContracts API is the recommended approach.
| Parameters | |
|---|---|
Activity activity |
parent activity for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
int requestCode |
The number given when calling |
@Nullable DialogInterface.OnCancelListener cancelListener |
The |
| See also | |
|---|---|
showErrorDialogFragment |
getErrorDialog
public @Nullable Dialog getErrorDialog(
Fragment fragment,
int errorCode,
int requestCode,
@Nullable DialogInterface.OnCancelListener cancelListener
)
Returns a dialog to address the provided errorCode. The returned dialog displays a localized message about the error and upon user confirmation (by tapping on dialog) will direct them to the Play Store if Google Play services is out of date or missing, or to system settings if Google Play services is disabled on the device. This method follows the startActivityForResult and onActivityResult API pattern. Consider migrating to showErrorDialogFragment as the androidx.activity.result.contract.ActivityResultContracts API is the recommended approach.
| Parameters | |
|---|---|
Fragment fragment |
parent fragment for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
int requestCode |
The number given when calling |
@Nullable DialogInterface.OnCancelListener cancelListener |
The |
| See also | |
|---|---|
showErrorDialogFragment |
getErrorResolutionPendingIntent
public @Nullable PendingIntent getErrorResolutionPendingIntent(
Context context,
ConnectionResult result
)
Returns a PendingIntent to address the provided connection failure.
If hasResolution is true, then getResolution will be returned. Otherwise, the returned PendingIntent will direct the user to either the Play Store if Google Play services is out of date or missing, or system settings if Google Play services is disabled on the device.
| Parameters | |
|---|---|
Context context |
parent context for creating the PendingIntent. |
ConnectionResult result |
the connection failure. If successful or the error is not resolvable by the user, null is returned. |
getErrorResolutionPendingIntent
public @Nullable PendingIntent getErrorResolutionPendingIntent(
Context context,
int errorCode,
int requestCode
)
Returns a PendingIntent to address the provided errorCode. It will direct the user to either the Play Store if Google Play services is out of date or missing, or system settings if Google Play services is disabled on the device.
| Parameters | |
|---|---|
Context context |
parent context for creating the PendingIntent. |
int errorCode |
error code returned by |
int requestCode |
The requestCode given when calling startActivityForResult. |
getErrorString
public final @NonNull String getErrorString(int errorCode)
Returns a human-readable string of the error code returned from isGooglePlayServicesAvailable.
getInstance
public static @NonNull GoogleApiAvailability getInstance()
Returns the singleton instance of GoogleApiAvailability.
isGooglePlayServicesAvailable
public int isGooglePlayServicesAvailable(Context context)
Verifies that Google Play services is installed and enabled on this device, and that the version installed on this device is no older than the one required by this client.
| Returns | |
|---|---|
int |
status code indicating whether there was an error. Can be one of following in : SUCCESS, SERVICE_MISSING, SERVICE_UPDATING, SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID |
isUserResolvableError
public final boolean isUserResolvableError(int errorCode)
Determines whether an error can be resolved via user action. If true, proceed by calling getErrorDialog and showing the dialog.
| Parameters | |
|---|---|
int errorCode |
error code returned by |
| Returns | |
|---|---|
boolean |
true if the error is resolvable with getErrorDialog |
makeGooglePlayServicesAvailable
@MainThread
public @NonNull Task<Void> makeGooglePlayServicesAvailable(Activity activity)
Attempts to make Google Play services available on this device. If Play Services is already available, the returned Task may complete immediately.
If it is necessary to display UI in order to complete this request (e.g. sending the user to the Google Play store) the passed Activity will be used to display this UI.
It is recommended to call this method from onCreate. If the passed Activity completes before the returned Task completes, the Task will fail with a java.util.concurrent.CancellationException.
This method must be called from the main thread.
setDefaultNotificationChannelId
@TargetApi(value = Build.VERSION_CODES.O)
public void setDefaultNotificationChannelId(
@NonNull Context context,
@NonNull String notificationChannelId
)
Overrides the default notification channel for Google Play services availability notifications.
It is required to register a NotificationChannel with the
notificationChannelId in NotificationManager before calling this method. If the is not registered AND the platform is at least Android O, then a will be thrown.
showErrorDialogFragment
public boolean showErrorDialogFragment(
Activity activity,
int errorCode,
int requestCode
)
Displays a DialogFragment for an error code returned by isGooglePlayServicesAvailable. This method follows the startActivityForResult and onActivityResult API pattern. Consider migrating to showErrorDialogFragment as the androidx.activity.result.contract.ActivityResultContracts API is the recommended approach.
| Parameters | |
|---|---|
Activity activity |
parent activity for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
int requestCode |
The number given when calling |
| Returns | |
|---|---|
boolean |
true if the dialog is shown, false otherwise |
showErrorDialogFragment
public boolean showErrorDialogFragment(
Activity activity,
int errorCode,
ActivityResultLauncher<IntentSenderRequest> activityResultLauncher,
@Nullable DialogInterface.OnCancelListener cancelListener
)
Displays a DialogFragment for an errorCode returned by isGooglePlayServicesAvailable.
| Parameters | |
|---|---|
Activity activity |
parent activity for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
ActivityResultLauncher<IntentSenderRequest> activityResultLauncher |
The |
@Nullable DialogInterface.OnCancelListener cancelListener |
The |
| Returns | |
|---|---|
boolean |
|
showErrorDialogFragment
public boolean showErrorDialogFragment(
Activity activity,
int errorCode,
int requestCode,
@Nullable DialogInterface.OnCancelListener cancelListener
)
Displays a DialogFragment for an error code returned by isGooglePlayServicesAvailable. This method follows the startActivityForResult and onActivityResult API pattern. Consider migrating to showErrorDialogFragment as the androidx.activity.result.contract.ActivityResultContracts API is the recommended approach.
| Parameters | |
|---|---|
Activity activity |
parent activity for creating the dialog, also used for identifying language to display dialog in. |
int errorCode |
error code returned by |
int requestCode |
The number given when calling |
@Nullable DialogInterface.OnCancelListener cancelListener |
The |
| Returns | |
|---|---|
boolean |
true if the dialog is shown, false otherwise. |
showErrorNotification
public void showErrorNotification(Context context, int errorCode)
Displays a notification for an error code returned from isGooglePlayServicesAvailable, if it is resolvable by the user.
This method is similar to getErrorDialog, but is provided for background tasks that cannot or should not display dialogs.
| Parameters | |
|---|---|
Context context |
The calling context for displaying the notification. |
int errorCode |
Error code returned by |
showErrorNotification
public void showErrorNotification(Context context, ConnectionResult result)
Displays a notification for a connection failure, if it is resolvable by the user.
| Parameters | |
|---|---|
Context context |
The calling context used to display the notification. |
ConnectionResult result |
The connection failure. If successful or the error is not resolvable by the user, no notification is shown. |