簡體   English   中英

無法確定 Android 設備上是否安裝了 Google Play 商店

[英]Cannot determine whether Google play store is installed or not on Android device

這是檢查設備上已安裝軟件包的簡單問題……在我將操作系統升級到 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;
        }
    }
}

由於某些原因更新后,我根本找不到指示應用程序已安裝的to包名稱,盡管它在設備上,並且我可以訪問市場。

包名改了嗎? 或者也許我看錯了?

謝謝,

亞當。

更新:

這是檢查軟件包是否安裝的愚蠢方法......更好的方法是:

protected final boolean isPackageInstalled(String packageName) {
    try {
        application.getPackageManager().getPackageInfo(packageName, 0);
    } catch (NameNotFoundException e) {
        return false;
    }
    return true;
}

請注意,這個將近 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;
        }
    }
}

GooglePlayServices 有一個實用程序類,其中包含處理此問題的方法:

isGooglePlayServicesAvailable(Context)

它為設備上的播放服務狀態提供適當的錯誤對話框。

API參考:

GoogleApiAvailability.isGooglePlayServicesAvailable(android.content.Context)

正如邁克爾在評論中所說的那樣,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;
    }
}

在大多數情況下,我們想知道是否安裝了 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.
}

使用此代碼,您可以檢查您的設備上是否安裝了Google Play 服務

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM