Tac*_*0sS 17 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于某些原因在更新后,我根本无法找到包名称来指示应用程序已安装,虽然它在设备上,我可以访问市场.
包名称是否已更改?或者我正在以错误的方式看待这个?
谢谢,
亚当.
更新:
这是检查包是否安装的愚蠢方法...更好的方法是:
protected final boolean isPackageInstalled(String packageName) {
try {
application.getPackageManager().getPackageInfo(packageName, 0);
} catch (NameNotFoundException e) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
Sco*_*ris 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
GooglePlayServices有一个实用程序类来处理这个问题,并提供适当的错误对话框,以根据设备中播放服务的状态显示.
API参考: http ://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
正如迈克尔在评论中所述,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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11374 次 |
| 最近记录: |