Я использую LVL в течение многих лет без проблем. У меня установлена моя учетная запись, поэтому я являюсь действующим тестером лицензии, и, таким образом, я должен иметь возможность настроить ответ через консоль разработки. Недавно я обновил свое приложение до совместимого с Android 5.0 (т. Е. TargetSDK теперь является уровнем API 21). Я знаю, что я должен использовать явные намерения при привязке к сервису (например, LVL) на уровне API 21 и внес соответствующие изменения (фактически, прежде чем я сделал это изменение, я не мог даже привязываться к услуге LVL, а теперь Я могу, поэтому я знаю, что сделал это правильно). Проблема в том, что когда я запускаю свое приложение на устройстве Lollipop (Nexus 5 с заводским изображением), я всегда получаю NOT_LICENSED с сервера. Если я запустил такое же приложение на устройстве KitKat, я получаю ответ, который я настроил через консоль разработки , Таким образом, это, по-видимому, проблема с Lollipop. Кто-нибудь еще столкнулся с этим, и если да, то как вы его решили.Android 5.0 Лицензия Проверка всегда возвращается NOT_LICENSED
ответ
В случае, если кто-то еще сталкивается с этим, проблема прояснилась примерно через 48 часов. Я не внес никаких изменений в свое приложение и не изменил ничего с моей конфигурацией учетной записи разработчика Google. Я просто ушел от проблемы на несколько дней, и когда я вернулся, это сработало, как ожидалось. Поэтому я подозреваю, что проблема была в конце Google.
Если вы ответили на этот вопрос. Пожалуйста, отметьте правильный. –
Я тоже испытывал это. Некоторые из моих пользователей всегда получают NOT_LICENSED, даже если все правильно. Похоже, что это прежде всего пользователи, у которых есть несколько устройств. Единственное решение, которое я нашел до сих пор, - это сброс настроек (yuck). Если я найду что-то лучшее, я отправлю его здесь.
Это вопрос, отличный от факта, что в течение месяца в Lollipop был сломан LVL. Для этого мое решение сложнее, но не требует жесткого кодирования имени пакета.
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);
у вас есть пример того, как изменить его, чтобы использовать явные намерения, так как приложение лицензии образца до сих пор использует неявные намерения – pt123
Да - вы хотите: 'Intent намерения = новый Intent (ILicensingService.class.getName ()); '' intent.setPackage ("com.android.vending"); '' булево bindResult = mContext.bindService ( \t намерение, это, // ServiceConnection Context.BIND_AUTO_CREATE). ' – Rob
спасибо Rob , кто-то дал ответ в вопросе, который я создал http://stackoverflow.com/q/27209510/1527440, который сказал, что у вас были проблемы с проверкой лицензии o n эмулятор Lollipop, или используют физическое устройство, спасибо – pt123