গুগল প্লে পরিষেবাগুলির সংস্করণটি কীভাবে চেক করবেন?


95

আমার অ্যাপ্লিকেশনটিতে, আমাকে গুগল প্লে পরিষেবা সংস্করণ (যা ব্যবহারকারীর ডিভাইসে ইনস্টল করা হয়েছে) পরীক্ষা করা দরকার। এটা কি সম্ভব ? এবং যদি হ্যাঁ, আমি কীভাবে এটি করতে পারি? আমি গুগল অনুসন্ধান করেছি কিন্তু আমি কিছুই খুঁজে পাইনি!

উত্তর:


97

আমি সহজ সমাধান পেয়েছি:

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

7
প্লে পরিষেবাদির সংস্করণ 10.2 সংস্করণ কোডটি কীভাবে জানবেন
মনমোহন সোনি

যেহেতু versionCode API28 সঙ্গে অবচিত আপনি ব্যবহার করা উচিত PackageInfoCompat.getLongVersionCode
G00fY

52

আপনি Stan0 দ্বারা উপলব্ধ লিঙ্কে দেখুন আপনি দেখতে হবে এই :

public static final int GOOGLE_PLAY_SERVICES_VERSION_CODE

এই ক্লায়েন্ট সংস্করণটির সাথে সামঞ্জস্য রাখতে ন্যূনতম গুগল প্লে পরিষেবাদি প্যাকেজ সংস্করণ (অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এন্ড্রয়েড: ভার্সনকোডে ঘোষিত)। অবিচ্ছিন্ন মান: 3225000 (0x003135a8)

সুতরাং, যখন আপনি এটি আপনার ম্যানিফেস্টে সেট করেন এবং তারপরে কল করুন isGooglePlayServicesAvailable(context):

public static int isGooglePlayServicesAvailable (Context context)

এই ডিভাইসে গুগল প্লে পরিষেবাদি ইনস্টল ও সক্ষম রয়েছে কিনা তা যাচাই করে এবং এই ডিভাইসে ইনস্টল করা সংস্করণটি এই ক্লায়েন্টের প্রয়োজনের চেয়ে পুরানো নয়।

ফিরে আসে

  • কোনও ত্রুটি ছিল কিনা তা নির্দেশ করে স্থিতি কোড। ConnectionResult নিম্নলিখিত এক হতে পারে না: SUCCESS, SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID

এটি নিশ্চিত করবে যে ডিভাইসটি আপনার অ্যাপ্লিকেশনটির প্রয়োজনীয় সংস্করণটি ব্যবহার করছে, যদি তা না হয় তবে আপনি ডকুমেন্টেশন অনুযায়ী পদক্ষেপ নিতে পারেন

সম্পাদনা করুন

GooglePlayServicesUtil.isGooglePlayServicesAvailable()অবচয় করা হয়েছে এবং এখন GoogleApiAvailability.isGooglePlayServicesAvailable()পরিবর্তে ব্যবহার করা উচিত।


4
। GoogleApiAvailability এখন একটি Singleton যাতে আপনি ব্যবহার করা উচিত হল: GoogleApiAvailability.getInstance () isGooglePlayServicesAvailable (কার্যকলাপ)
Nativ

@ নাটিভ অ্যান্ড্রয়েড ডিভাইসে চলমান গুগল প্লে সার্ভিস সংস্করণ 10.2 এর চেয়ে বেশি কিনা তা যাচাই করার কোনও উপায় নেই
মনমোহন সোনি

@ মনমোহনসনি আমি নিশ্চিত যে সেখানে আছে। আমি বর্তমানে আইওএস বিকাশে স্থানান্তরিত হয়েছি তাই আমি আপনার পক্ষে বেশি সহায়ক হতে পারি না।
নাটিভ

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

5

গুরুত্বপূর্ণ : গুগলাপ্পি উপলভ্যতা OOGLE GOOGLE_PLAY_SERVICES_VERSION_CODE আপনার অ্যাপ্লিকেশন দ্বারা প্রয়োজনীয় ন্যূনতম সংস্করণটি ফিরিয়ে দেয়, ব্যবহারকারীর ডিভাইসে ইনস্টল থাকা প্লে পরিষেবাদির সংস্করণ নয়।


1

আমি আজ সকালে একই সমস্যায় পড়েছি। স্ট্যান 0 এর পরামর্শ অনুসারে এটি সম্পন্ন হয়েছে। ধন্যবাদ 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- প্লে-পরিষেবাদি_লিবের ম্যানিফেস্ট.এক্সএমএল একই স্থানে অবস্থান করছে।

আশা করি এটি সহায়ক হবে।


1

আপনি যদি অ্যাপ্লিকেশন ম্যানেজারটিতে গুগল প্লে পরিষেবাগুলি সন্ধান করেন তবে এটি ইনস্টল করা সংস্করণটি দেখায়।


আমি অন্যান্য উত্তরে তালিকাবদ্ধ অন্যান্য প্রোগ্রাম্যাটিক পদ্ধতির চেষ্টা করি নি তবে অ্যাপ্লিকেশন ম্যানেজারে অনুসন্ধান করা আমার পক্ষে কাজ করেছে, ধন্যবাদ!
কেন্ট.গ্রিন

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

হিসাবে একই ফলাফল পাবেন:

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

তবে দ্বিতীয়টিকে একটি চেষ্টা করার ভিতরে রাখা দরকার।


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

গুগল প্লে পরিষেবাদি ব্যবহার করা যেতে পারে কিনা তা পরীক্ষা করতে নিম্নলিখিত ফাংশনটি ব্যবহার করুন

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.