无法确定Android设备上是否安装了Google play store
这是一个简单的问题,检查设备上安装的软件包。。。在我将操作系统升级到2.3.5之前,我可以使用以下代码找到Market/Play商店:无法确定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&
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()
中使用flagPackageManager.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.
}