我有两个主要问题,第一个问题是:
我在应用结算设置中使用了intelij。我最近切换到Android Studio 1.0稳定版,现在我无法像之前那样使应用内结算工作。具体问题是:
try {
itemsDescription2.setText(inventory.getSkuDetails("images").getDescription());
purchaseButton2.setText(inventory.getSkuDetails("images").getPrice());
}
catch(NullPointerException e){
Log.d("PRICE","NPE happened" + e);
}
NPE总是出现在这里。
"images"
确实在我的Google Play开发者控制台上作为应用内商品,我之前没有任何问题。此外,当我开始购买“图像”时,我会收到一个谷歌播放对话框,上面写着“您试图购买的商品无法找到”。
正如我AndroidMaifest.xml
6171000
中的Google Play服务版本4132500
,但在我以前的intelij设置中,我一直在使用12-11 12:42:00.989 21348-21348/simplequiz.nick.com.namethatplanequiz E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: simplequiz.nick.com, PID: 21348
java.lang.RuntimeException: Unable to start activity ComponentInfo{simplequiz.nick.com/com.nick.simplequiz.MainActivity}: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.android.vending.billing.InAppBillingService.BIND }
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
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:1674)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1773)
at android.app.ContextImpl.bindService(ContextImpl.java:1751)
at android.content.ContextWrapper.bindService(ContextWrapper.java:538)
at com.nick.simplequiz.MainActivity.onCreate(MainActivity.java:108)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
。我不确定谷歌播放服务的版本是否相关,但这是我能想到的唯一可能导致这个问题的事情。我尝试将项目更改为使用4.4.2而不是5.0进行编译,并且还更改了清单中声明的google play服务版本但发生了相同的错误。
我的第二个问题是运行Android 5.0的设备,例如我的Nexus 9,我收到此错误:
MainActivity
这是bindService(new Intent(
"com.android.vending.billing.InAppBillingService.BIND"),
connection, Context.BIND_AUTO_CREATE);
中发生的行:
Bundle buyIntentBundle = mservice.getBuyIntent(3, getPackageName(),
"images", "inapp", "key");
当我在这个问题中尝试建议的解决方案时:Google In-App billing, IllegalArgumentException: Service Intent must be explicit, after upgrading to Android L Dev Preview当我尝试发起购买时,我收到错误:
mservice
错误是此行的空指针异常。
我还注意到,在链接问题的已接受答案中实施解决方案会导致{{1}}始终为空,服务永远不会连接。
关于我还能尝试什么的任何建议?
答案 0 :(得分:0)
它可能与Google Play服务库有关。您是否在SDK中安装了最新版本?
您是否使用新的gradle配置?如果在切换到Android Studio后出现第一个问题,并且没有其他任何更改,则可能是问题与新的gradle配置有关。如你所说,看一下如何整合游戏服务库(更多关于这个here)。
您是仅在Android 5.0上还是在较低版本上遇到这些问题?
答案 1 :(得分:0)
答案 2 :(得分:0)
更改您的MainActivity.onCreate()以与此类似地调用bindService:
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE);