2016-08-20 2 views
0

Я получаю следующее исключение:Google IAB помощник bindService аварии

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{myapppackage2/myapppackage.ui.MainActivity}: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.android.vending.billing.InAppBillingService.BIND } 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java) 
     at android.app.ActivityThread.access$800(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java) 
     at android.os.Handler.dispatchMessage(Handler.java) 
     at android.os.Looper.loop(Looper.java) 
     at android.app.ActivityThread.main(ActivityThread.java) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
Caused by java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.android.vending.billing.InAppBillingService.BIND } 
     at android.app.ContextImpl.validateServiceIntent(ContextImpl.java) 
     at android.app.ContextImpl.bindServiceCommon(ContextImpl.java) 
     at android.app.ContextImpl.bindService(ContextImpl.java) 
     at android.content.ContextWrapper.bindService(ContextWrapper.java) 
     at com.android.vending.billing.util.IabHelper.doBindService(IabHelper.java:277) 
     at com.android.vending.billing.util.IabHelper.startSetup(IabHelper.java:268) 
     at myapppackage.feature.FeaturesManager.initBilling(FeaturesManager.java:79) 
     at myapppackage.ui.MainActivity.onCreate(MainActivity.java:374) 
     at android.app.Activity.performCreate(Activity.java) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java) 
     at android.app.ActivityThread.access$800(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java) 
     at android.os.Handler.dispatchMessage(Handler.java) 
     at android.os.Looper.loop(Looper.java) 
     at android.app.ActivityThread.main(ActivityThread.java) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 

я уже гугле немного и нашел я должен добавить serviceIntent.setPackage("com.android.vending"); но проблема в том, что я уже имея его:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 
     serviceIntent.setPackage("com.android.vending"); 
     List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentServices(serviceIntent, 0); 
     if (resolveInfos != null && !resolveInfos.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.")); 
      } 
     } 

xiaomi mi-4c, android 5.1.1, корень.

Любые мысли?

ответ

-1

Первые проверки службы Google доступен в устройстве с использованием

public static boolean checkPlayServices(Context mContext) { 
    GoogleApiAvailability api = GoogleApiAvailability.getInstance(); 
    int resultCode = api.isGooglePlayServicesAvailable(mContext); 
    return resultCode == ConnectionResult.SUCCESS; 
} 

затем использовать это.

try { 
    Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 
    serviceIntent.setPackage("com.android.vending"); 
    mContext.bindService(serviceIntent, SceneSelection.this, Context.BIND_AUTO_CREATE); 
    } catch (RuntimeException ignored) { 
     if (listener != null) { 
      listener.onIabSetupFinished(new IabResult(BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE, 
           "Billing service unavailable on device.")); 
      } 
} 
+0

это не объяснение, но walkaround. Любая идея о корневой причине? – 4ntoine

+0

ответ обновлен. –

+0

, пожалуйста, обратитесь к этой ссылке для основной причины. Http://stackoverflow.com/questions/27981246/dealing-with-implicit-intent-future-deprecation-in-lollipop –

Смежные вопросы