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