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

时间:2012-05-11 12:41:39

标签: android google-play

这是检查设备上已安装软件包的简单问题...在我将操作系统升级到2.3.5之前,我可以使用以下代码找到Market / 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;
}

5 个答案:

答案 0 :(得分:31)

请注意,这个差不多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;
        }
    }
}

答案 1 :(得分:9)

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

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

答案 2 :(得分:5)

正如迈克尔在评论中所说,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;
    }
}

答案 3 :(得分:1)

在大多数情况下,我们希望了解是否安装了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.
}

答案 4 :(得分:0)

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

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