我在使用应用内结算流程时遇到了令人沮丧的问题.
我在开发控制台中创建了一个新的应用程序,添加了一个名为“P1”的inapp产品,该产品目前处于活动状态;我已经将我的应用程序上传到alpha版本的商店,然后升级到测试版,添加了测试人员帐户并在使用测试人员帐户签署的设备(平板电脑)上安装了apk,并使用开发帐户进行了安装.
我在开发控制台中创建了一个新的应用程序,添加了一个名为“P1”的inapp产品,该产品目前处于活动状态;我已经将我的应用程序上传到alpha版本的商店,然后升级到测试版,添加了测试人员帐户并在使用测试人员帐户签署的设备(平板电脑)上安装了apk,并使用开发帐户进行了安装.
现在,我想查询商店以获取非拥有skus价格等信息.
这是我的活动代码:
private void istantiate() { List<String> tmp = new List<String>(); tmp.add("P1"); final List<String> skus = tmp; mHelper = new IabHelper(mContext,base64EncodedPublicKey); // enable debug logging (for a production application,you should set this to false). mHelper.enableDebugLogging(true); //create listener bListener = new BillingListener(mHelper,mContext); // Start setup. This is asynchronous and the specified listener will be called once setup completes. mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { if (!result.isSuccess()) { // There was a problem. return; } getInventory(skus); } }); } ... private void getInventory(List<String> skuList) { // Have we been disposed of in the meantime? If so,quit. if (mHelper == null) return; // IAB is fully set up. Now,let's get an inventory of stuff we own. mHelper.queryInventoryAsync(true,skuList,bListener.mQueryFinishedListener); }
IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result,Inventory inventory) { if (result.isFailure()) { // handle error return; } ... } };
但退回的库存是空的.这是logcat:
12-13 11:21:36.977: D/IabHelper(6034): Billing service connected. 12-13 11:21:36.977: D/IabHelper(6034): Checking for in-app billing 3 support. 12-13 11:21:36.987: D/IabHelper(6034): In-app billing version 3 supported for *** 12-13 11:21:36.987: D/IabHelper(6034): Subscriptions AVAILABLE. 12-13 11:21:36.987: D/IabHelper(6034): Starting async operation: refresh inventory 12-13 11:21:36.987: D/IabHelper(6034): Querying owned items,item type: inapp 12-13 11:21:36.987: D/IabHelper(6034): Package name: *** 12-13 11:21:36.987: D/IabHelper(6034): Calling getPurchases with continuation token: null 12-13 11:21:36.997: D/IabHelper(6034): Owned items response: 0 12-13 11:21:36.997: D/IabHelper(6034): Continuation token: null 12-13 11:21:36.997: D/IabHelper(6034): Querying SKU details. 12-13 11:21:37.097: D/IabHelper(6034): Querying owned items,item type: subs 12-13 11:21:37.097: D/IabHelper(6034): Package name: *** 12-13 11:21:37.097: D/IabHelper(6034): Calling getPurchases with continuation token: null 12-13 11:21:37.097: D/IabHelper(6034): Owned items response: 0 12-13 11:21:37.097: D/IabHelper(6034): Continuation token: null 12-13 11:21:37.097: D/IabHelper(6034): Querying SKU details. 12-13 11:21:37.097: D/IabHelper(6034): Ending async operation: refresh inventory
自我的inapp产品发布以来大约一周,所以这不是时间问题.
我试图清除应用数据,然后重启设备.
编辑:使用android.test.purchased作为测试sku,一切正常.
编辑2:SKU是“非托管”
解决方法
我也遇到了这个问题,但是一旦我清除了Google Play应用的应用数据,它就解决了.使用adb:
adb shell pm clear com.android.vending