Google Play सेवाएं संस्करण कैसे जांचें?


95

मेरे आवेदन में, मुझे Google Play सेवाओं के संस्करण (जो उपयोगकर्ता के डिवाइस में स्थापित है) की जांच करने की आवश्यकता है। क्या यह संभव है ? और यदि हाँ, तो मैं कैसे कर सकता हूँ? मैंने Google पर खोज की लेकिन मुझे कुछ नहीं मिला!

जवाबों:


94

मुझे सरल समाधान मिला:

int v = getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ).versionCode;

लेकिन versionCodeएपीआई 28 में अपग्रेड किया गया है, इसलिए आप इसका उपयोग कर सकते हैं PackageInfoCompat:

long v = PackageInfoCompat.getLongVersionCode(getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ));

6
नाटक सेवाओं के संस्करण का संस्करण कैसे पता करें 10.2
मनमोहन सोनी

चूंकि versionCode API28 साथ हटा दिया गया है आप का उपयोग करना चाहिए PackageInfoCompat.getLongVersionCode
G00fY

51

आप 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()किया जाता है और अब इसके बजाय उपयोग किया जाना चाहिए।


2
GoogleApiAvucation अब एक सिंगलटन है, इसलिए आपको इसका उपयोग करना चाहिए: GoogleApiAvucation.getInstance () .GooglePlayServicesAvailable (गतिविधि)
Nativ

@Nativ यह जांचने का कोई तरीका है कि Android डिवाइस पर चलने वाला Google play Services संस्करण 10.2 से अधिक है या नहीं
मनमोहन सोनी

@ManmohanSoni मुझे यकीन है कि वहाँ है। मैं वर्तमान में iOS विकास में स्थानांतरित हो गया हूं इसलिए मैं आपके लिए बहुत मददगार नहीं हो सकता।
नटिव

15

यहाँ मेरा समाधान है:

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;
        }
    }

और आपके पास दो विकल्प हैं, या तो टिप्पणी के रूप में अपना कोड सीधे दूसरे ब्लॉक में लिखें, या कस्टम कोड लिखने के लिए इस विधि के लिए दिए गए बूलियन मान का उपयोग करें।

मुझे उम्मीद है कि यह कोड किसी की मदद करता है।


6

नए अपडेट से मैंने इस कोड के साथ समाप्त किया है, मैंने इससे संबंधित सभी सामानों को प्रबंधित करने के लिए एक आसान तरीका बनाया है।

सेवा की उपलब्धता और संबंधित विवरण से संबंधित सभी विवरण यहां उपलब्ध हैं

 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;लिए आप दे देंगे।

और एक सबसे उपयोगी उत्तर जो मुझे अपने शोध के दौरान मिला, वह है यहां।


6
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();
     }
}

4

महत्वपूर्ण : GoogleApiAvucation.GOOGLE_PLAY_SERVICES_VERSION_CODE आपके ऐप द्वारा आवश्यक न्यूनतम संस्करण लौटाता है, न कि उपयोगकर्ता के डिवाइस पर इंस्टॉल किए जाने वाले प्ले सर्विसेज संस्करण।


1

मैं आज सुबह एक ही समस्या में चला गया हूँ। और यह 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).
        }
    }
}

इसके अलावा, आपको अपने घोषणापत्र में एक विशेषता जोड़ने की जरूरत है।

<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 में एक ही स्थान पर स्थित है।

आशा है कि यह मदद की होगी।


1

यदि आप अनुप्रयोग प्रबंधक में Google Play सेवाएँ देखते हैं तो यह स्थापित संस्करण दिखाएगा।


मैंने अन्य जवाबों में सूचीबद्ध अन्य प्रोग्रामेटिक तरीकों की कोशिश नहीं की है, लेकिन एप्लिकेशन मैनेजर में खोजना मेरे लिए काम करता है, धन्यवाद!
कैंट.ग्रीन

1

अपडेट किया गया (2019.07.03) कोटलिन संस्करण:

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
            }
        }

    }

}

0

जाँच करने के लिए निम्न फ़ंक्शन का उपयोग करें कि क्या Google play सेवाएं इस्तेमाल की जा सकती हैं या नहीं

 private boolean checkGooglePlayServicesAvailable() {
    final int connectionStatusCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (GooglePlayServicesUtil.isUserRecoverableError(connectionStatusCode)) {
        showGooglePlayServicesAvailabilityErrorDialog(connectionStatusCode);
        return false;
    }
    return true;
}

0
int apkVersion = GoogleApiAvailability.getInstance().getApkVersion(getContext());

के रूप में एक ही परिणाम मिल जाएगा:

int v = getPackageManager().getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0 ).versionCode;

लेकिन दूसरे को कोशिश-कैच के अंदर रखना होगा।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.