应用内购买查询库存异常

时间:2014-08-26 20:35:32

标签: android

我正在尝试使用developer.android.com中的示例实现应用内购买,当然,因为它是Google,所以它不起作用。在他们的示例中,在我的应用的onCreate()方法中,我有:

mHelper = new IabHelper(this, publicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
    public void onIabSetupFinished(IabResult result) {
        if (!result.isSuccess()) {
            Log.d("iap","Iab error: "+result.getMessage());
            return;
        } 
        Log.d("iap","In-app Billing set up successfully");
    }
});  

我有一种方法可以查询/刷新应用内购买的广告资源,例如:

public void refreshIAP() {
    mHelper.queryInventoryAsync(true, skuList, mQueryFinishedListener);
}

问题是queryInventoryAsync()方法使应用程序崩溃并出现错误Can't create handler inside thread that has not called Looper.prepare()。 如果我从onIabSetupFinished()调用此方法,它可以正常工作但我不想这样做 - 我希望能够随时调用此方法(当然,在设置完成后)。 我不知道这个Looper.prepare()是什么,因为它在Android文档示例中没有被引用,我认为它不是必需的,我只是误解了一些东西。

1 个答案:

答案 0 :(得分:2)

你应该在这样的UI线程上调用refreshIAP

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        refreshIAP();       
    }
});