私のアプリケーションでは、(ユーザーのデバイスにインストールされている) Google Play サービスのバージョンを確認する必要があります。出来ますか ?はいの場合、どうすればそれを行うことができますか?
12 に答える
これが私の解決策です:
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;
}
}
2 つのオプションがあります。コメントとして 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;
ためにあなたを与えるでしょう。
そして、私の研究中に見つけた最も有用な答えの1つはここにあります.
私は今朝同じ問題に遭遇しました。stan0さんからのアドバイスで完成しました。ありがとうスタン0。
https://developers.google.com/maps/documentation/android/mapのサンプル コードに基づいて必要な変更は 1 つだけです。
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).
}
}
}
さらに、次のように manifest.xml に属性を追加する必要があります。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name"
android:versionCode="3225130"
android:versionName="your.version" >
また、「3225130」の値は、プロジェクトが使用している google-play-services_lib から取得されます。また、その値は google-play-services_lib の manifest.xml と同じ場所にあります。
次の関数を使用して、Google Play サービスが使用できるかどうかを確認します。
private boolean checkGooglePlayServicesAvailable() {
final int connectionStatusCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (GooglePlayServicesUtil.isUserRecoverableError(connectionStatusCode)) {
showGooglePlayServicesAvailabilityErrorDialog(connectionStatusCode);
return false;
}
return true;
}
int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
int currentVersion = getAppVersion(context);
if (registeredVersion != currentVersion) {
Log.i(TAG, "App version changed.");
return "";
}