我让我的应用内结算工作,但后来我移动了一些代码以获得更大的可扩展性并且它已经崩溃了。基本上我试图做的是为我的广告制作一个适配器,以便以后用更少的编程工作来添加它们更容易。我的项目在清单中具有结算权限,并配置为在Google Play商店中进行结算,因此不是问题。
AdOnsActivity
public class AdOnsActivity extends AppCompatActivity {
private IInAppBillingService mService;
private ServiceConnection mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ad_ons);
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
listAdOns = findViewById(R.id.listAdOns);
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
try {
...
listAdOns.setAdapter(new AdOnAdapter(AdOnsActivity.this, json.getJSONArray("adOns"), mService));
} catch (Exception e) {
Toast.makeText(AdOnsActivity.this, getResources().getString(R.string.error_load_ad_ons), Toast.LENGTH_SHORT).show();
e.printStackTrace();
finish();
}
}
});
}
AdOnAdapter
public class AdOnAdapter extends BaseAdapter {
public AdOnAdapter(Activity activity, JSONArray adOns, IInAppBillingService mService) throws RemoteException {
Bundle querySkus = new Bundle();
this.activity = activity;
this.adOns = adOns;
this.mService = mService;
skuDetails = mService.getSkuDetails(3, activity.getPackageName(), "inapp", querySkus);
responseDetails = skuDetails.getInt("RESPONSE_CODE");
ownedItems = mService.getPurchases(3, activity.getPackageName(), "inapp", null);
responseOwned = ownedItems.getInt("RESPONSE_CODE");
}
答案 0 :(得分:0)
所有回复代码are listed here。
5表示您使用无效参数调用API。你以某种方式破坏了你的API调用。也许比较旧版和新版代码下API调用的内容(你正在使用源代码控制吗?)。
答案 1 :(得分:0)
根据文档,这个错误可能是一堆东西。对我来说,这是许可用途。当我添加它们时,没有迹象表明这些电子邮件被添加到许可证测试人员列表中。我不断添加它们,更改“许可证响应”并保存,但没有任何改变。
过了一会儿,我意识到我必须在电子邮件列表中按“Enter”才能真正添加用户。我知道这听起来很傻,但那是我唯一的问题(至少我认为这是因为我花了一天的时间寻找原因)。
因此,如果您收到此错误并且在 Settings -> License Testing -> License testers
中没有看到任何电子邮件,那么您可能是使调试正常工作的唯一关键。