Лицензия «LICENSED RESPONSE» для лицензии Android - PullRequest
1 голос
/ 18 января 2011

У меня проблема с тестированием ответа "LICENSED" LVL. Я уже изменил ответ на тестовую лицензию в панели управления в профиле редактирования на веб-сайте Market.

Когда я установил «НЕ ЛИЦЕНЗИРОВАН», он будет предлагать покупку или выход, но если я установлю ЛИЦЕНЗИЮ, после ожидания индикатора выполнения «ПРОВЕРКА ЛИЦЕНЗИИ» он не будет загружать страницу моей основной активности, проверка лицензионных циклов бесконечно, и мне нужно принудительно закрыть процесс. Я уже добавил в манифест имя Java-файла licensecheck и включил раздел с намерениями.

Вот что я запечатлел в logcat. У кого-нибудь есть идея, что происходит? Как мне исправить мой код?

I/LICENSE (  312): checkLicense
I/LicenseChecker(  312): Binding to licensing service.
I/ActivityManager(   59): Start proc com.android.vending for service com.android.vending/.licensing.LicensingService: pid=320 uid=10019 gids
={3003}
I/LicenseChecker(  312): Calling checkLicense on service for com.test.apps1
I/ActivityManager(   59): Displayed activity com.test.apps1/.MActivity: 3586 ms (total 3586 ms)
I/LicenseChecker(  312): Start monitoring timeout.
I/ARMAssembler(   59): generated scanline__00000077:03515104_00000000_00000000 [ 33 ipp] (47 ins) at [0x305798:0x305854] in 914005 ns
D/GoogleLoginService(  170): onBind: Intent { act=android.accounts.AccountAuthenticator cmp=com.google.android.gsf/.loginservice.GoogleLogin
Service }
I/LicenseChecker(  312): Received response.
I/LicenseChecker(  312): Clearing timeout.
E/LicenseValidator(  312): CORI APP LICENSED!
W/ServerManagedPolicy(  312): License validity timestamp (VT) missing, caching for a minute
W/ServerManagedPolicy(  312): License retry timestamp (GT) missing, grace period disabled
W/ServerManagedPolicy(  312): Licence retry count (GR) missing, grace period disabled
D/LicenseChecker(  312): Allow
I/ActivityManager(   59): Starting activity: Intent { cmp=com.test.apps1/.MActivity }
I/LICENSE (  312): checkLicense
D/dalvikvm(  312): GC_FOR_MALLOC freed 3870 objects / 267592 bytes in 92ms
I/LicenseChecker(  312): Using cached license response
D/LicenseChecker(  312): Allow
I/ActivityManager(   59): Starting activity: Intent { cmp=com.test.apps1/.MActivity }
I/LICENSE (  312): checkLicense
I/LicenseChecker(  312): Using cached license response
D/LicenseChecker(  312): Allow
I/ActivityManager(   59): Starting activity: Intent { cmp=com.test.apps1/.MActivity }
I/LICENSE (  312): checkLicense
I/LicenseChecker(  312): Using cached license response
D/LicenseChecker(  312): Allow
I/ActivityManager(   59): Starting activity: Intent { cmp=com.test.apps1/.MActivity }
I/LICENSE (  312): checkLicense
I/LicenseChecker(  312): Using cached license response
D/LicenseChecker(  312): Allow
I/ActivityManager(   59): Starting activity: Intent { cmp=com.test.apps1/.MActivity }
I/LICENSE (  312): checkLicense
I/LicenseChecker(  312): Using cached license response
D/LicenseChecker(  312): Allow
I/ActivityManager(   59): Starting activity: Intent { cmp=com.test.apps1/.MActivity }
I/LICENSE (  312): checkLicense
W/ActivityManager(   59): Launch timeout has expired, giving up wake lock!
W/ActivityManager(   59): Activity idle timeout for HistoryRecord{44003148 com.test.apps1/.MActivity}
public void allow() 
{
    Log.d("LicenseChecker","Allow");
    //Log.i("LICENSE", "allow");
    if (isFinishing()) 
    {
        // Don't update UI if Activity is finishing.
        return;
    }
    // Should allow user access.
    displayResult(getString(R.string.allow));

    // Should allow user access.
    startMainActivity();
}

Это связано с меткой времени ответа кеша? Если да, как я могу изменить и изменить его?

W/ServerManagedPolicy(  312): License validity timestamp (VT) missing, caching for a minute
W/ServerManagedPolicy(  312): License retry timestamp (GT) missing, grace period disabled
W/ServerManagedPolicy(  312): Licence retry count (GR) missing, grace period disabled

Нужно ли изменять ServerManagedPolicy?

public boolean allowAccess() {
    long ts = System.currentTimeMillis();
    if (mLastResponse == LicenseResponse.LICENSED) {
        // Check if the LICENSED response occurred within the validity timeout.
        if (ts <= mValidityTimestamp) {
            // Cached LICENSED response is still valid.
            return true;
        }
    } else if (mLastResponse == LicenseResponse.RETRY &&
               ts < mLastResponseTime + MILLIS_PER_MINUTE) {
        // Only allow access if we are within the retry period or we haven't used up our
        // max retries.
        return (ts <= mRetryUntil || mRetryCount <= mMaxRetries);
    }
    return false;
}

Кроме того, как я могу сделать следующее?

  1. Когда нет лицензии (либо нет лицензии на сервере Google, либо нет кэшированной лицензии), тогда предложите запретить и перейдите на рынок.

  2. При наличии кэшированной лицензии разрешите пользователю запускать приложения (независимо от того, отсутствует сеть или нет сетевого подключения).

  3. Если на сервере Google есть лицензия (сетевой режим), но нет кэшированной лицензии, разрешите пользователю запускать приложения.

1 Ответ

1 голос
/ 18 января 2011

Сообщения об отсутствующих VT, GT и GR являются нормальными, когда вы устанавливаете тестовый ответ на что-либо, кроме «Отвечать нормально».В вашем коде может быть логическая проблема.Это может помочь, если вы сможете опубликовать код для startMainActivity (), а также метод onCreate () (и любые соответствующие методы, которые они вызывают).

...