当运行Google在sdk / extras / google / play_licensing中提供的示例许可检查应用时,它会在运行Lollipop(5.0)的模拟器(AVD)上崩溃(我没有运行5.0的手机)。它在运行Kitkat的手机上运行良好。
在4.4 Kitkat上它会发出警告
Implicit intents with startService are not safe: Intent { act=com.android.vending.licensing.ILicensingService }
android.content.ContextWrapper.bindService:538 com.google.android.vending.licensing.LicenseChecker.checkAccess:150 LicActivity.doCheck:126
我不确定5.0他们是否已将其从警告移至完全爆炸错误。
我不知道如何将隐式意图调用转换为显式调用。 它在LicenceChecker类中被调用
boolean bindResult = mContext
.bindService(
new Intent(
new String(
Base64.decode("HEX_TEXT"))),
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);
BASE 64解码为com.android.vending.licensing.ILicensingService
我刚收到一条错误消息很遗憾,许可证检查程序已停止。在对话框中。
它在logcat中显示此消息
java.lang.RuntimeException: Unable to instantiate application com.android.vending.VendingApplication: java.lang.ClassNotFoundException:
Didn't find class "com.android.vending.VendingApplication" on path: DexPathList[[zip file "/system/app/LicenseChecker/LicenseChecker.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
有人报道了一段时间但仍然没有解决方案
答案 0 :(得分:9)
添加
intent.setPackage("com.android.vending");
到Intent
确保它是Android 5.0所要求的明确意图。
答案 1 :(得分:1)
试试这个
Intent serviceIntent = new Intent(
new String(Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U=")));
serviceIntent.setPackage("com.android.vending");
boolean bindResult = mContext
.bindService(
serviceIntent,
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);