Прежде чем я отвечу на ваш вопрос, вот краткое объяснение, что такое HMS и GMS:
- HMS означает Huawei Mobile Services
- GMS означает Google Mobile Services
Вы можете опубликовать sh ваше приложение (которое использует библиотеки Google) в магазине приложений Huawei (с именем AppGallery), но это приложение будет видно и доступно только для загрузки. для устройств Huawei, содержащих HMS + GMS (все устройства до 2020 года имели HMS и GMS).
Однако на более новых телефонах, например, серии Mate 30, P40, будет установлена только HMS. Поэтому, если вы хотите, чтобы ваше приложение было видимым для всех устройств Huawei (HMS + GMS и HMS), вам нужно будет реализовать в своем приложении функцию определения того, какая служба включена на устройстве пользователя. Он решит, какую функцию вызывать (т.е. инициализировать экземпляр Huawei Maps или Google Maps).
Вот код для обнаружения HMS и GMS:
Для мобильных служб Huawei мы используем:
HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context);
https://developer.huawei.com/consumer/en/doc/development/HMS-References/huaweiapiavailability
Для мобильных сервисов Google мы используем:
GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
https://developers.google.com/android/reference/com/google/android/gms/common/GoogleApiAvailability
Вот код, как правильно обрабатывать обнаружение HMS и GMS:
public static boolean isHmsAvailable(Context context) {
boolean isAvailable = false;
if (null != context) {
int result = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context);
isAvailable = (com.huawei.hms.api.ConnectionResult.SUCCESS == result);
}
Log.i(TAG, "isHmsAvailable: " + isAvailable);
return isAvailable;
}
public static boolean isGmsAvailable(Context context) {
boolean isAvailable = false;
if (null != context) {
int result = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
isAvailable = (com.google.android.gms.common.ConnectionResult.SUCCESS == result);
}
Log.i(TAG, "isGmsAvailable: " + isAvailable);
return isAvailable;
}
AFAIK эти классы (HuaweiApiAvailability / GoogleApiAvailability) доступны, если вы реализуете любой из набора Huawei / библиотеки Google.