Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法确定Android设备上是否安装了Google play store_Android_Google Play - Fatal编程技术网

无法确定Android设备上是否安装了Google play store

无法确定Android设备上是否安装了Google play store,android,google-play,Android,Google Play,这是一个简单的问题,检查设备上安装的软件包。。。在我将操作系统升级到2.3.5之前,我可以使用以下代码找到Market/Play商店: private static final String GooglePlayStorePackageName = "com.google.market"; void someMethod() { packageManager = getApplication().getPackageManager(); List<PackageInfo&

这是一个简单的问题,检查设备上安装的软件包。。。在我将操作系统升级到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;
        }
    }
}

请注意,这段使用了近5年的代码并不是最佳的,谷歌不喜欢在没有充分理由的情况下检查所有已安装的软件包。请检查其他答案。

软件包名称已更改,现在是com.android.vending


尝试:

private静态最终字符串GooglePlayStorePackageNameOld=“com.google.market”;
私有静态最终字符串GooglePlayStorePackageNameNew=“com.android.vending”;
void方法(){
PackageManager PackageManager=getApplication().getPackageManager();
List packages=packageManager.getInstalledPackages(packageManager.GET\u卸载的\u软件包);
用于(PackageInfo-PackageInfo:Package){
if(packageInfo.packageName.equals(GooglePlayStorePackageNameOld)||
packageInfo.packageName.equals(谷歌PlayStorePackagenamenew)){
googlePlayStoreInstalled=true;
打破
}
}
}

Google PlayServices有一个实用程序类,其中包含一个处理此问题的方法:


isGooglePlayServicesAvailable(上下文)

它为设备上播放服务的状态提供适当的错误对话框

API参考:


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

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

正如Michael在评论中所说,Google Play服务与Google Play商店不同。使用此选项确定设备上是否安装了Play Store:

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 Store,是否在预装应用程序页面的情况下启动它

为什么我们不能这样做:

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

这意味着现在我必须检查这两个应用是否存在。。。隐马尔可夫模型。。。不太好!但是为什么要在
getInstalledPackages()
中使用flag
PackageManager.GET\u UNINSTALLED\u PACKAGES
,而不仅仅是
getInstalledPackages(0)
?顺便说一句,不是
“com.google.vending”
,而是
“com.android.vending”
。不确定旧名称。谢谢,有一条评论:packageManager的声明必须是:packageManager packageManager,并且还想说与Prizoff相同。@Prizoff:您可以禁用Google Play Store应用程序。因此,虽然它不计入已安装的应用程序中,但当我们通过“GET_UNINSTALLED_PACKAGES”标志时,它将被拾取。这是最近的。。。我将在接下来的几天里测试它。。。到目前为止,代码看起来像一团乱麻!的确如此!但是,谷歌已经习惯了这样做:)请注意,开发者不应该混淆谷歌游戏商店应用程序和谷歌游戏服务。isGooglePlayServicesAvailable()检查后者,后者可能是一个指标,但不是一个要求。不过,该类对两个包名都有常量。IMHO,如果你想查看现有的Google Play store应用程序(例如,因为您想推出market://intent,请将PackageManager与GOOGLE_PLAY_STORE_软件包一起使用。绝对。您想编辑我的评论,使其包含此内容吗?上述代码工作正常…thanxGoogle PLAY Service!=GOOGLE PLAY STORE。您可以安装商店,但不能安装GPS,反之亦然。OP要求e store.
isGooglePlayServicesAvailable
已被弃用。请改用
GooglePayAvailability.getInstance().isGooglePlayServicesAvailable(上下文)
。请注意,这需要将
com.google.android.gms:play services base:$playServicesVersion
添加到依赖项中。(它不会对正在安装的播放服务产生运行时依赖。)@Thomas,这不是必需的。您可以将GooglePlayServicesUtil.GOOGLE\u Play\u STORE\u包替换为“com.android.vending”
public static boolean isPlayStoreInstalled(Context context){
    try {
        context.getPackageManager()
                .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}
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.
}