android - 服务 Intent 必须明确 : Intent { act=com. android.vending.billing.InAppBillingService.BIND }

标签 android in-app-purchase

我在某些 5.0 设备上收到显式 Intent 异常,但我的代码已经具有显式 Intent 并且如下所示:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
    serviceIntent.setPackage("com.android.vending");
    PackageManager pm=mContext.getPackageManager();
    List<ResolveInfo> intentServices = pm.queryIntentServices(serviceIntent, 0);
    if (intentServices != null && !intentServices.isEmpty()){
        //this was replaced per this comment http://stackoverflow.com/a/24202135/704836
    //if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) {
        // service available to handle that Intent
        mContext.bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
    } else {
        // no service available to handle that Intent
        if (listener != null) {
            listener.onIabSetupFinished(
                    new IabResult(BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE,
                            "Billing service unavailable on device."));
        }
    }

我得到的异常是这样的:

Non-fatal Exception: java.lang.IllegalArgumentException
Service Intent must be explicit: Intent { act=com.android.vending.billing.InAppBillingService.BIND }

android.app.ContextImpl.validateServiceIntent (ContextImpl.java:1681)

android.content.ContextWrapper.bindService (ContextWrapper.java:538)

IabHelper.startSetup (IabHelper.java:272)

MyApp.createIABHelper (MyApp.java:256)

MyApp.onCreate (MyApp.java:156)

android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1011)

android.app.ActivityThread.handleBindApplication (ActivityThread.java:4520)

android.app.ActivityThread.access$1500 (ActivityThread.java:144)

android.app.ActivityThread$H.handleMessage (ActivityThread.java:1339)

android.os.Looper.loop (Looper.java:135)

android.app.ActivityThread.main (ActivityThread.java:5223)

java.lang.reflect.Method.invoke (Method.java)

com.android.internal.os.ZygoteInit.main (ZygoteInit.java:693)

我不确定我做错了什么,我所做的每一次搜索都得到了 serviceIntent.setPackage("com.android.vending"); 作为修复,但我的代码已经有了.

谢谢。

最佳答案

尝试从官方网站获取最新的 com.android.vending.billing.utils,应该可以解决问题。

http://developer.android.com/training/in-app-billing/preparing-iab-app.html#GetSample

关于android - 服务 Intent 必须明确 : Intent { act=com. android.vending.billing.InAppBillingService.BIND },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27911003/

相关文章:

Android 2.3 和 Adhoc

android - 尝试查找 BLE 设备时如何使用 LeDeviceListAdapter?

ios - 无法以沙盒用户身份购买 IAP

ios - 缺少IAP-尽管IAP正在“等待审核”

iphone - IAP 正在使用 TestFlight 构建。它也适用于 Live 应用程序吗?

android - 在Service的onStartCommand中检索Intent的旧值

android - 有助于为 Android 实现基于 SQLite 的持久性的工具?

android - 如何在 dotnet core 上实现服务器端 google 授权

android - 创建自定义简单游标适配器

ios - 沙盒 "Apple ID Password"永远登录警报