Google Play 서비스 버전을 확인하는 방법은 무엇입니까?
내 애플리케이션에서 사용자 기기에 설치된 Google Play 서비스 버전을 확인해야합니다. 가능합니까? 그렇다면 어떻게해야합니까? Google을 검색했지만 아무것도 찾지 못했습니다!
간단한 해결책을 찾았습니다.
int v = getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ).versionCode;
그러나 versionCode
API 28에서는 더 이상 사용되지 않으므로 다음을 사용할 수 있습니다 PackageInfoCompat
.
long v = PackageInfoCompat.getLongVersionCode(getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ));
당신이 Stan0에서 제공하는 링크를 보면 당신은 볼 이 :
public static final int GOOGLE_PLAY_SERVICES_VERSION_CODE
이 클라이언트 버전과 호환되기위한 최소 Google Play 서비스 패키지 버전 (AndroidManifest.xml android : versionCode에 선언 됨)입니다. 상수 값 : 3225000 (0x003135a8)
그래서, 당신은 당신의 매니페스트에이 부분을 설정하고, 다음 호출 할 때 isGooglePlayServicesAvailable(context)
:
public static int isGooglePlayServicesAvailable (Context context)
이 기기에 Google Play 서비스가 설치 및 사용 설정되어 있으며이 기기에 설치된 버전이이 클라이언트에 필요한 버전보다 이전 버전이 아닌지 확인합니다.
보고
- 오류가 있었는지 여부를 나타내는 상태 코드입니다. ConnectionResult에서 다음 중 하나 일 수 있습니다 :
SUCCESS
,SERVICE_MISSING
,SERVICE_VERSION_UPDATE_REQUIRED
,SERVICE_DISABLED
,SERVICE_INVALID
.
기기가 앱에 필요한 버전을 사용하고 있는지 확인합니다. 그렇지 않은 경우 문서에 따라 조치를 취할 수 있습니다.
편집하다
GooglePlayServicesUtil.isGooglePlayServicesAvailable()
더 이상 사용되지 않으며 이제 GoogleApiAvailability.isGooglePlayServicesAvailable()
대신 사용해야합니다.
내 해결책은 다음과 같습니다.
private boolean checkGooglePlayServices() {
final int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (status != ConnectionResult.SUCCESS) {
Log.e(TAG, GooglePlayServicesUtil.getErrorString(status));
// ask user to update google play services.
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, 1);
dialog.show();
return false;
} else {
Log.i(TAG, GooglePlayServicesUtil.getErrorString(status));
// google play services is updated.
//your code goes here...
return true;
}
}
그리고 두 가지 옵션이 있습니다. 주석 처리 된대로 else 블록에 직접 코드를 작성하거나이 메서드에 대해 반환 된 부울 값을 사용하여 사용자 지정 코드를 작성합니다.
이 코드가 누군가에게 도움이되기를 바랍니다.
최신 업데이트에서이 코드로 끝났고 관련된 모든 항목을 관리하는 편리한 방법을 만들었습니다.
서비스 가용성과 관련된 모든 세부 정보 및 관련 세부 정보는 여기에서 확인할 수 있습니다 .
private void checkPlayService(int PLAY_SERVICE_STATUS)
{
switch (PLAY_SERVICE_STATUS)
{
case ConnectionResult.API_UNAVAILABLE:
//API is not available
break;
case ConnectionResult.NETWORK_ERROR:
//Network error while connection
break;
case ConnectionResult.RESTRICTED_PROFILE:
//Profile is restricted by google so can not be used for play services
break;
case ConnectionResult.SERVICE_MISSING:
//service is missing
break;
case ConnectionResult.SIGN_IN_REQUIRED:
//service available but user not signed in
break;
case ConnectionResult.SUCCESS:
break;
}
}
이렇게 사용합니다.
GoogleApiAvailability avail;
int PLAY_SERVICE_STATUS = avail.isGooglePlayServicesAvailable(this);
checkPlayService(PLAY_SERVICE_STATUS);
그리고 버전 GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
은 당신에게 줄 것입니다.
그리고 제가 연구하는 동안 찾은 가장 유용한 답변 중 하나 는 여기입니다.
int status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this);
if(status != ConnectionResult.SUCCESS) {
if(status == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){
Toast.makeText(this,"please update your google play service",Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this, "please download the google play service", Toast.LENGTH_SHORT).show();
}
}
중요 : GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE는 사용자 기기에 설치된 Play 서비스 버전이 아닌 앱에 필요한 최소 버전을 반환합니다.
오늘 아침에도 같은 문제가 발생했습니다. 그리고 stan0의 조언에 따라 완료되었습니다. 감사합니다 stan0.
https://developers.google.com/maps/documentation/android/map 의 샘플 코드를 기반으로 한 번만 변경하면 됩니다.
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the
// map.
if (mMap == null) {
FragmentManager mgr = getFragmentManager();
MapFragment mapFragment = (MapFragment)mgr.findFragmentById(R.id.map);
mMap = mapFragment.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
// The Map is verified. It is now safe to manipulate the map.
setUpMap();
}else{
// check if google play service in the device is not available or out-dated.
GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
// nothing anymore, cuz android will take care of the rest (to remind user to update google play service).
}
}
}
Besides, you need to add an attribute to your manifest.xml as:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name"
android:versionCode="3225130"
android:versionName="your.version" >
And the value of "3225130" is taken from the google-play-services_lib that your project is using. Also, that value is residing in the same location of manifest.xml in google-play-services_lib.
Hope it will be of help.
If you look up Google Play Services in the Application manager it will show the version installed.
Updated (2019.07.03) Kotlin version:
class GooglePlayServicesUtil {
companion object {
private const val GOOGLE_PLAY_SERVICES_AVAILABLE_REQUEST = 9000
fun isGooglePlayServicesWithError(activity: Activity, showDialog: Boolean): Boolean {
val status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity)
return if (status != ConnectionResult.SUCCESS) {
if (showDialog) {
GoogleApiAvailability.getInstance().getErrorDialog(activity, status, GOOGLE_PLAY_SERVICES_AVAILABLE_REQUEST).show()
}
true
} else {
false
}
}
}
}
use the following function to check if google play services could be used or not
private boolean checkGooglePlayServicesAvailable() {
final int connectionStatusCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (GooglePlayServicesUtil.isUserRecoverableError(connectionStatusCode)) {
showGooglePlayServicesAvailabilityErrorDialog(connectionStatusCode);
return false;
}
return true;
}
int apkVersion = GoogleApiAvailability.getInstance().getApkVersion(getContext());
will get the same result as:
int v = getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ).versionCode;
But the second one needs to be put inside a try-catch.
int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
int currentVersion = getAppVersion(context);
if (registeredVersion != currentVersion) {
Log.i(TAG, "App version changed.");
return "";
}
참고URL : https://stackoverflow.com/questions/18737632/how-to-check-google-play-services-version
'Programming' 카테고리의 다른 글
행 및 열 번호가 주어지면 셀의 내용을 가져옵니다. (0) | 2020.08.26 |
---|---|
Go에서 float64를 int로 변환 (0) | 2020.08.26 |
문자열 조각을 단일 문자열로 결합하는 방법은 무엇입니까? (0) | 2020.08.26 |
이 상황에서 .map ()은 무엇을합니까? (0) | 2020.08.26 |
Razor ViewEngine : "@"기호를 어떻게 이스케이프합니까? (0) | 2020.08.26 |