Google Play:LVL:许可证:验证错误或失败:LicenseChecker 回调:com.google.android.vending.licensing

GooglePlay: LVL: License: Validation Errors or Failures: LicenseCheckerCallback: com.google.android.vending.licensing

我的收件箱今天早上被用户收到我的一个付费应用程序的许可证验证错误的消息淹没了。该应用程序的许可在过去 5 年左右的时间里运行良好。

很遗憾,我无法重现该问题...

它使用来自 Google package="com.google.android.vending.licensing"

的旧 LVL
private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
    // Means: GooglePlay believes this user is legitimate
    @Override
    public void allow(int x, int policyReason, String y) {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }

        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                try { mProgressDialog.dismiss(); mProgressDialog = null; } catch (Exception e) {e.printStackTrace(); }
            }
        });

        // Update server
        Util.pingServer(getApplicationContext());
    }

    // Means: Google Play definitely thinks this version is a pirate version
    @SuppressWarnings("SpellCheckingInspection")
    public void dontAllow(int x, final int policyReason, String y) {
        EventLog.i(TAG, "don't Allow: " + policyReason);
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }

        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                try { mProgressDialog.dismiss(); mProgressDialog = null; } catch (Exception e) {e.printStackTrace(); }
                showGoogleLicenseDialog(policyReason == Policy.RETRY ? 1 : 0);
            }
        });
    }


    // Means: Developer has not setup licensing properly
    // ERROR_NOT_MARKET_MANAGED: not managed by Android Market (now called Google Play)
    // More specifically, the version X of your application is not uploaded or published in Google Play
    public void applicationError(final int errorCode) {
        EventLog.e(TAG, "applicationError: " + errorCode);

        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }

        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                try { mProgressDialog.dismiss(); mProgressDialog = null; } catch (Exception e) {e.printStackTrace(); }

                // Developer mistake dialog
                String result = String.format(getString(R.string.application_error), errorCode);
                ActivityHelper.showToast(MainActivity.this, "License problem: App Error: " + result, Toast.LENGTH_LONG);
            }
        });
    }
}
private final MyLicenseCheckerCallback mMyLicenseCheckerCallback = new MyLicenseCheckerCallback();

似乎 Google 已经在生产中对此进行了改进。可以通过更新到 GooglePlay 商店 10.7.19

来修复

Latest Google Play Store 10.7.19 fixes LVL check

这里还有一篇文章:

Google Play Store app licensing bug is putting developers in a horrible spot

用户的一些评论:
"Thanks, I side-loaded the playstore update and that seems to have fixed it."
"We gave up in the end and factory reset the phone. This seems to have fixed the issue..."

目前的主要问题是并非所有用户都可以访问 10.7.19 更新...

更新:

还收到了一些评论,例如:
"On the Settings tab, I toggled the Notification Access off/on. That seemed to wake it up. Errors stopped."