7

Currently there are some devices that doesn't have Google Play (Huawei Devices), is there a way for me to check programmatically if the device doesn't have one? I wanted to use the in-app-update feature: https://developer.android.com/guide/playcore/in-app-updates and check if the device has a Google PlayStore first.

What I have tried so far: using Uri.parse("market://details?id=" + appPackageName) but you need to start the activity first to confirm it exists? I'd like to know if there are better ways to do it.

Marcin Orlowski
  • 72,056
  • 11
  • 123
  • 141
Mike
  • 1,313
  • 12
  • 21

2 Answers2

8

You can use the following code to check whether the android device has Google Play:

boolean flag = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == com.google.android.gms.common.ConnectionResult.SUCCESS

If flag == true, then GMS is enable in device.

If flag == false, then GMS is disable in device.

zhangxaochen
  • 32,744
  • 15
  • 77
  • 108
  • is this code blocking and need another thread or we can use that code on the main thread? – Abdulmalek Dery Jan 16 '21 at 09:26
  • 2
    @AbdulmalekDery Can be used on main thread, although the best practice is to avoid calling on main thread anything that specifically does not need to run on main thread. – m0skit0 Nov 08 '21 at 11:32
5

You can check if the package com.android.vending exists or not

public static boolean isPackageInstalled(String packageName, PackageManager packageManager) {
    try {
        return packageManager.getApplicationInfo(packageName, 0).enabled;
    }
    catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

And you can do like this in your activity


if(isPackageInstalled("com.android.vending", getPackageManager())){ 

   // play store is installed

}else{ 

   // play store is not installed

}

Sujan Poudel
  • 794
  • 5
  • 16