Проверка лицензии Android 5.0 всегда возвращает NOT_LICENSED

Я использую LVL в течение многих лет без проблем. У меня есть настройка моей учетной записи, так что я являюсь действительным тестером лицензий, и поэтому я должен иметь возможность настроить ответ через консоль разработки. Недавно я обновил свое приложение, чтобы оно соответствовало Android 5.0 (т. е. targetSDK теперь имеет уровень API 21). Я осознаю, что должен использовать явные намерения при привязке к сервису (например, LVL) на уровне API 21 и внес соответствующие изменения (на самом деле, до внесения этого изменения я даже не мог привязаться к сервису LVL, а теперь Я могу, поэтому я знаю, что сделал это изменение правильно). Проблема в том, что когда я запускаю свое приложение на устройстве Lollipop (Nexus 5 с заводским образом), я всегда получаю сообщение NOT_LICENSED с сервера. Если я запускаю то же приложение на устройстве KitKat, я получаю ответ, который я настроил через консоль разработки. . Так что это похоже на конкретную проблему Lollipop. Кто-нибудь еще сталкивался с этим, и если да, то как вы это решили.


person Rob    schedule 27.11.2014    source источник
comment
у вас есть пример того, как вы меняете его, чтобы использовать явные намерения, поскольку в примере приложения с лицензией все еще используются неявные намерения   -  person pt123    schedule 30.11.2014
comment
Да - вы хотите: Intent intent = new Intent(ILicensingService.class.getName()); intent.setPackage("com.android.vending"); boolean bindResult = mContext.bindService( intent, this, // ServiceConnection. Context.BIND_AUTO_CREATE);   -  person Rob    schedule 01.12.2014
comment
спасибо, Роб, кто-то дал ответ на вопрос, который я создал stackoverflow.com/q/27209510/1527440, в котором говорилось, что вы были проблемы с проверкой лицензии на эмуляторе Lollipop или используете физическое устройство, спасибо   -  person pt123    schedule 01.12.2014
comment
Арг. Не могу удалить комментарий. Смотрите мое решение.   -  person Dustin    schedule 01.03.2015


Ответы (2)


На случай, если кто-то еще столкнется с этим, проблема исчезла примерно через 48 часов. Я не вносил никаких изменений в свое приложение и ничего не менял в конфигурации своей учетной записи разработчика Google Play. Я просто ушел от проблемы на несколько дней, а когда вернулся, все заработало, как и ожидалось. Поэтому я подозреваю, что проблема была на стороне Google.

person Rob    schedule 01.12.2014
comment
Если вы ответили на этот вопрос. Пожалуйста, отметьте правильно. - person Jared Burrows; 13.02.2015

Я тоже испытал это. Некоторые из моих пользователей всегда получают NOT_LICENSED, даже если все правильно. По-видимому, в первую очередь это пользователи, у которых есть более одного устройства. Единственное решение, которое я нашел до сих пор, это сброс к заводским настройкам (гадость). Если я найду что-то лучше, я опубликую это здесь.

Это проблема, не связанная с тем фактом, что LVL не работает в Lollipop уже несколько месяцев. Для этого мое решение более сложное, но не требует жесткого кодирования имени пакета.

                final Intent intent =  new Intent(
                        new String(
                                Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U=")));
                final ResolveInfo resolveInfo = mContext.getPackageManager().resolveService(intent, 0);
                final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
                final ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name);
                intent.setComponent(componentName);
                boolean bindResult = mContext
                        .bindService(
                               intent,
                                this, // ServiceConnection.
                                Context.BIND_AUTO_CREATE);
person Dustin    schedule 28.02.2015