2012-04-30 203 views
10

使用com.android.vending.licensing您可以檢查您的應用程序是否已獲得許可。有一個回調,applicationError(),告訴你是否有任何問題。今天我遇到錯誤ERROR_NOT_MARKET_MANAGED,我無法弄清楚我應該如何處理它!你如何處理LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED錯誤代碼?

這裏就是我所做的:

  1. 在谷歌玩,我說我的E-mail地址作爲測試帳戶。
  2. 在Google Play上,我用versionCode="10"保存了我的應用(未發佈)。
  3. 在我的機器上,我更改爲versionCode="11"
  4. 許可證檢查現在失敗,錯誤代碼爲ERROR_NOT_MARKET_MANAGED

問題是;我應該處理這個錯誤還是這是一個不切實際的情況?

回答

30

ERROR_NOT_MARKET_MANAGED:該名稱確實告訴了所有關於它自身的信息,應用程序不受Android Market(現稱爲Google Play)管理。更具體地說,您的應用程序的第11版不會在Google Play中上傳或發佈。

我應該處理這個錯誤還是這是一個不切實際的情況?

我會認爲這是不切實際的情況。只要您在Google Play中上傳新的應用版本,就不需要執行任何特殊的代碼。 ERROR_NOT_MARKET_MANAGED更像是LVL開發警告,它幫助開發人員正確實施許可證檢查代碼,並按照正確的程序在項目構建時測試許可證檢查。檢查出LVL示例代碼中的註釋:

private class MyLicenseCheckerCallback implements LicenseCheckerCallback { 

    ... ... 

    public void applicationError(ApplicationErrorCode errorCode) { 
     if (isFinishing()) { 
      // Don't update UI if Activity is finishing. 
      return; 
     } 
     // This is a polite way of saying the developer made a mistake 
     // while setting up or calling the license checker library. 
     // Please examine the error code and fix the error. 
     //String result = String.format(getString(R.string.application_error), errorCode); 
     //String result = "Error"; 
     //handleLicensingResult(result); 
    } 
} 

整合LVL到應用程序的整點是使用谷歌Play上發佈您的應用程序,並使用谷歌播放客戶端應用程序下載和安裝應用程序(見Requirements and Limitations節開發指南)。我看不到,可在最終用戶的設備上運行時造成這個的ApplicationError任何一點,如果:

  1. 開發者遵循正確的程序上傳(用於測試LVL),或在谷歌發佈(真正釋放)播放。
  2. 最終用戶使用Google Play客戶端應用程序購買,下載並安裝應用程序。

如果最終用戶以某種方式從其他渠道(不通過Google Play購買)中獲取應用程序副本(LVL已集成並上載/在Google Play中發佈)並嘗試將其安裝到他的設備上(與Google播放安裝在該設備上的客戶端應用程序),在這種情況下,LicenseCheckerCallback將轉到dontAllow()而不是applicationError(ApplicationErrorCode errorCode)。

+1

優秀的答案!謝謝。 – l33t

+0

似乎這個錯誤不是強制性的。我已經開發了兩年多的應用程序,而且我在使用ICS的SamsungGalaxy S2上運行我的應用程序時只看到了這個錯誤。 – slott

+0

明智的回答這個,絕對精彩,很多人認爲。 – Soham

13

不要在將應用上傳到Google Play後立即測試您的應用。

等待一段時間(15-20分鐘或可能更長),然後開始測試。 Google Play需要一些時間才能識別您的應用。

+4

我認爲這是由您手機上的Google Play商店應用程序的緩存數據引起的,通過清除數據和/或緩存(設置 - 應用程序 - Google Play商店),我可以立即測試並獲取許可證狀態更改。 – yorkw

+0

或者更好的是,獲得一個硬件設備,將其重置爲出廠設置,然後將其主要用戶帳戶設置爲您上傳APK的開發者帳戶。 – logray

+1

對我來說,花了一個多小時......我以爲我做錯了什麼,但似乎有時候需要耐心等待。 – neon1

1

至於現在,2014年5月,爲了測試上傳的APK和擴展OBB,我必須發佈測試應用(無需製作APK上傳)。否則,當測試APKExpansionPolicy時,我總是得到ERROR_NOT_MARKET_MANAGED。發佈後2小時(網頁上的通知稱「長達24小時」),我可以獲取擴展文件信息。

除測試人員外,沒有人可以看到已發佈的應用程序AFAIK。

2

29 Jul,我發現雖然我的應用程序在Alpha或Beta測試中,但我所得到的只有Error 3或Error_Not_Market_Managed。這實際上是來自服務器的回覆。這意味着我正在接觸服務器並且代碼很好。無論開發者控制檯中的回覆是什麼,這都是我得到的唯一回復。

我已經等了3天,沒有變化。所以沒有等待時間是可以接受的。我甚至清除並重置了我的整個手機。我清除了Google Play緩存以及所有其他魔術技巧。他們都不是理由。

我使用新的Google許可證代碼更新了一個已發佈的應用程序,並得到了完全相同的響應。在我更改了版本代碼並將其上傳後,大約4小時後,該應用程序正常運行,並且Google許可證檢查響應了一個很好的有效代碼。現在,只要它已完全發佈,它就會以我告訴它的任何代碼進行響應。

所以答案是,谷歌許可證將無法正常運行,直到完全發佈。如果您的應用程序處於Alpha或Beta版,並且您收到錯誤3,那麼您可能會很好。在準備發佈之前,只需註釋許可證檢查方法即可。

+0

如果您的應用在Google Play上存在不存在(發佈或未發佈)的'versionCode',則應放棄所有錯誤。我原來的問題實際上包含正確的答案;這是不切實際的情況。 – l33t

+0

「在我更改了版本代碼,然後將其上傳到大約4小時後,該應用程序正常運行」之後,可能是因爲您更改了版本代碼? 我也有同樣的問題,而我仍然認爲beta測試應該可以。 – Jacky

0

它也可以發生在舊設備。我正在測試我的應用程序,但沒有發佈實際版本,它在我的Galaxy S8上運行良好,但是我在Galaxy S4上收到了此消息。 這意味着這也是一種禮貌的方式,可以說這也可能是Google的錯誤。