Estou tentando usar o Google Play Service em meu aplicativo Android. Como diz o documento do Google, precisamos verificar se a API do Google está disponível antes de usá-la. Eu procurei alguma maneira de verificar isso. Aqui está o que eu tenho:
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
Mas quando vou para a página GooglePlayServicesUtil do Google Api, https://developers.google.com/android/reference/com/google/android/gms/common/GooglePlayServicesUtil
Acho que todas as funções estão obsoletas . Por exemplo, o método
GooglePlayServicesUtil.isGooglePlayServicesAvailable (obsoleto)
E o Google recomenda usar:
GoogleApiAvailability.isGooglePlayServicesAvailable .
No entanto, quando tento usar GoogleApiAvailability.isGooglePlayServicesAvailable, recebo a mensagem de erro:
GooglePlayServicesUtil
sumiu (o que parece uma má prática para uma atualização "menor"), mas não estou vendoGoogleApiAvailability
para usar como um substituto.Respostas:
Eu encontrei a solução. No
GoogleApiAvailability
, todos os métodos são métodos públicos, enquanto emGooglePlayServicesUtil
todos os métodos são funções públicas estáticas.Portanto, para usar GoogleApiAvailability, a maneira certa é:
fonte
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
A classe GooglePlayServicesUtil não deve mais ser usada!
Aqui está como a classe GoogleApiAvailability pode ser usado - quando, por exemplo, GCM (ou qualquer outro serviço do Google) é necessário:
ATUALIZAR:
REQUEST_GOOGLE_PLAY_SERVICES
é uma constante inteira com nome e valor arbitrários, que pode ser referenciada noonActivityResult()
método.Além disso, ligar
this.onActivityResult()
no código acima está correto (você também ligasuper.onActivityResult()
no outro lugar).fonte
GOOGLE_PLAY_SERVICES_PACKAGE
constante da classe GoogleApiAvailability é a maneira do Google de dizer a você: não use mais aGooglePlayServicesUtil
classe.GoogleApiAvailability
classe não existe? Se fizermos referência à classe estaticamente, mesmo dentro de uma expressão condicional, o aplicativo não travará?GoogleApiAvailability
faz parte da biblioteca do cliente. Portanto, seu código é compilado no aplicativo => Não se preocupe com isso.Em vez disso, você terá que usar GoogleApiAvailability :
this
representa ocontext
.fonte
fonte
Eu adicionei isso como divertido na classe BaseActivity para ser usado em todos os lugares
use assim
Ou você pode personalizá-lo como quiser.
fonte