Google Play Service Check(확인)하기
Firebase나 GoogleMAP 등 개발 시 수많은 구글의API들을 사용합니다. 이때 대부분 Google Service API를 사용하게 되는데요, 이놈에게 문제가 생기면 전반적인 앱 구동에 많은 문제가 생기기 때문에 꼭 기기에서 Google Play Service 버전, 존재여부 등을 확인해 준 후 조치를 취해야 합니다.
기본으로 제공하는 메소드 사용하기
구글에서는 기본적으로 메소드를 제공하고 그에따른 결과를 확인할 수 있는 메소드도 제공하고 있습니다. 바로 GoogleApiAvailabilityLight 라는 놈입니다.
private void isGooglePlayServicesAvailable() {
GoogleApiAvailabilityLight googleApiAvailability = GoogleApiAvailabilityLight.getInstance();
int status = googleApiAvailability.isGooglePlayServicesAvailable(this);
if (status != ConnectionResult.SUCCESS) {
if (googleApiAvailability.isUserResolvableError(status)) {
Log.e("Google Play Service", String.valueOf(status));
}
Log.e("Google Play Service", "GOOGLE PLAY SERVICE ERROR, STATUS: " + status);
}
}
위 소스로 바로 구분할 수 있습니다.
isGoogleServicesAvailable을 호출하게 되면 기기의 상태에 따라 int값을 반환해 주게 됩니다. 이때 ConnectionResult를 통해 결과값을 확인할 수 있습니다.
위와같이 수많은 결과값들이 나오게 됩니다. 저는 SUCCESS가 아닌 이상 일단 다 오류로 봤는데요, 여기서 따로 구분을 해 주셔서 예외처리 해 주시면 됩니다. 그 중에서도 중요한 예외처리들이 있습니다.
- SUCCESS: Google Play Service(이하 GPS)가 정상 설치 상태
- SERVICE_MISSING: GPS가 없는 상태
- SERVICE_UPDATING: GPS가 업데이트 중
- SERVICE_VERSION_REQUIRED: GPS버전이 오래되어 업데이트가 필요한 상태
- SERVICE_DISABLED: GPS가 비활성화 된 상태
- SERVICE_INVALID: GPS가 인증되지 않은 상태
위와 같은 상태들이 뜬다면, 따로 구분해 주셔서 Play service 설치 화면으로 넘어가게끔 할 수 있습니다.
Google Play Service 설치 페이지로 이동하기
만약 저기서 예외상태에 도달했다면, google play service를 사용자가 설치할 수 있도록 도와줍시다.
private void installPlayService() {
Intent intent = new Intent(Intent.ACTION_VIEW //
, Uri.parse("market://details?id=" + GoogleApiAvailabilityLight.GOOGLE_PLAY_SERVICES_PACKAGE));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setPackage("com.android.vending");
startActivity(intent);
}
Google Service를 설치할 수 있는 PlayStore로 이동하는 소스입니다. 이를 활용하여 예외상태에 있을 때 메소드 호출을 시켜주면 됩니다.
switch (status) {
case ConnectionResult.SERVICE_MISSING:
installPlayService();
break;
case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
installPlayService();
break;
case ConnectionResult.SERVICE_DISABLED:
Toast.makeText(this, "GooglePlayService를 활성화 해 주십시오.", Toast.LENGTH_SHORT).show();
finish();
break;
case ConnectionResult.SERVICE_INVALID:
Toast.makeText(this, "GooglePlayService 인증에 실패하였습니다.", Toast.LENGTH_SHORT).show();
finish();
break;
}
혹시라도 더 좋은 방법이 있다면 공유 부탁드리며, 질문은 댓글로 받도록 하겠습니다.
'Android' 카테고리의 다른 글
'Android resource compilation failed' 에러 해결 (4) | 2018.09.30 |
---|---|
18:9 이상 화면비 지원하기 (4) | 2018.08.02 |
인터넷 연결 상태 확인하기 (0) | 2018.07.23 |
BottomNavigationView 애니메이션 제거하기 (0) | 2018.07.22 |
Magellan(마젤란) 사용하기 (0) | 2018.07.19 |
댓글
이 글 공유하기
다른 글
-
'Android resource compilation failed' 에러 해결
'Android resource compilation failed' 에러 해결
2018.09.30 -
18:9 이상 화면비 지원하기
18:9 이상 화면비 지원하기
2018.08.02 -
인터넷 연결 상태 확인하기
인터넷 연결 상태 확인하기
2018.07.23 -
BottomNavigationView 애니메이션 제거하기
BottomNavigationView 애니메이션 제거하기
2018.07.22