无法确定Google Play商店是否安装在Android设备上

这是一个简单的问题,检查设备上安装的软件包…在我已经升级到2.3.5我的操作系统,我可以find市场/ Play商店,使用此代码:

private static final String GooglePlayStorePackageName = "com.google.market"; void someMethod() { packageManager = getApplication().getPackageManager(); List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); for (PackageInfo packageInfo : packages) { if (packageInfo.packageName.equals(GooglePlayStorePackageName)) { googlePlayStoreInstalled = true; break; } } } 

出于某种原因,更新后,我找不到包名称来表示应用程序已安装,虽然它在设备上,我可以访问市场。

包名称是否更改? 或者我正在看这个错误的方式?

谢谢,

亚当。

更新:

这是一个愚蠢的方式来检查是否安装了一个软件包…更好的方法是:

 protected final boolean isPackageInstalled(String packageName) { try { application.getPackageManager().getPackageInfo(packageName, 0); } catch (NameNotFoundException e) { return false; } return true; } 

Solutions Collecting From Web of "无法确定Google Play商店是否安装在Android设备上"

请注意,这个差不多5年的代码并不是最优的,Google不会在没有任何理由的情况下检查所有已安装的软件包。 请检查其他答案。

包名已经改变,现在是com.android.vending


尝试:

 private static final String GooglePlayStorePackageNameOld = "com.google.market"; private static final String GooglePlayStorePackageNameNew = "com.android.vending"; void someMethod() { PackageManager packageManager = getApplication().getPackageManager(); List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); for (PackageInfo packageInfo : packages) { if (packageInfo.packageName.equals(GooglePlayStorePackageNameOld) || packageInfo.packageName.equals(GooglePlayStorePackageNameNew)) { googlePlayStoreInstalled = true; break; } } } 

GooglePlayServices有一个实用程序类来处理这个问题,并根据设备中播放服务的状态提供适当的错误对话框。

API参考: http //developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html

正如Michael在评论中指出的那样,Google Play服务与Google Play商店并不相同。 使用此来确定您的设备上是否安装了Play商店:

 public static boolean isPlayStoreInstalled(Context context){ try { context.getPackageManager() .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0); return true; } catch (PackageManager.NameNotFoundException e) { return false; } } 

使用此代码,您可以检查Google Play服务是否安装在您的设备上。

 int val=GooglePlayServicesUtil.isGooglePlayServicesAvailable(MainActivity.this); if(val==ConnectionResult.SUCCESS) { play_installed=true; } else { play_installed=false; } 

在大多数情况下,我们想知道Google Play商店是否已安装,并且预装了一些应用程序页面以启动它。

为什么不能这样做:

 final String appPackageName = getPackageName(); // get your app package name try { Uri uri = Uri.parse("market://details?id=" + appPackageName); startActivity(new Intent(Intent.ACTION_VIEW, uri)); } catch (android.content.ActivityNotFoundException anfe) { // Google Play Store is not available. }