FATAL EXCEPTION: main
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1328)
at android.os.Parcel.readException(Parcel.java:1276)
at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
at kr.my.dungeons.BillingService$CheckBillingSupported.run(BillingService.java:209)
at kr.my.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.java:127)
at kr.my.dungeons.BillingService.runPendingRequests(BillingService.java:609)
at kr.my.dungeons.BillingService.onServiceConnected(BillingService.java:654)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1049)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1066)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:126)
at android.app.ActivityThread.main(ActivityThread.java:4002)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
这是错误语法。
从SDK获取示例源。
将来自谷歌市场的“公钥”放入Security.java。
我的源路径是'src / kr / my /',而aidl文件路径是'src / com / android / vending / billing /'。
选中AndroidManifest.xml。
将apk上传到谷歌市场。 (未公布)
在谷歌市场添加'sword_001','potion_001'。(已发布)
在设备上安装了相同的apk。
(来自https://github.com/robotmedia/AndroidBillingLibrary的示例源中的相同错误)
我错了什么?
答案 0 :(得分:4)
当用户未接受市场EULA时会发生这种情况
所以启动EULA
try {
CALL BILLING CODE HERE .....
} catch (NullPointerException e) {
initialiseMarket();
}
private void initialiseMarket() {
new AlertDialog.Builder(this).
setTitle("Android Market").
setNeutralButton("CLOSE"), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search"));
startActivity(intent);
}
}).
setMessage("Android Market not initialised. Please accept EULA and restart.").
show();
}
答案 1 :(得分:0)
我正在努力解决这个问题https://github.com/drewjw81/AndroidBillingLibrary
当此版本无法正确绑定到播放时,应显示警告。
如果您使用它,请记住它仍然需要一些工作,所以请测试,如果错误仍然发生,请在我的页面上提交错误报告。
答案 2 :(得分:0)
这似乎是一个已知的应用内结算错误报告here。
发生这种情况时,我在AndroidBillingLibrary添加了catch
。
答案 3 :(得分:0)
在这里阅读我的答案:
android in-app billing - restoreTransactionInformation
我假设你试图恢复交易,因为一堆用户(包括我)在这样做时看到了这个堆栈跟踪。
发生错误是因为在调用restoreTransactions时发送回的CONFIRM_TRANSACTIONS请求中添加了一个空字段('notification_id'字段)。