Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android inapp billing - BillingService has compile errors with onServiceConnected and onServiceDisconnected

I am using the Dungeons application example and I am using the BillingService class provided in that example.

I am using Java 6 and @override works for me, but I get a compile error on these two methods inside BillingService.java:

/**
 * This is called when we are connected to the MarketBillingService.
 * This runs in the main UI thread.
 */
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
    if (Consts.DEBUG) {
        Log.d(TAG, "Billing service connected");
    }
    mService = IMarketBillingService.Stub.asInterface(service);
    runPendingRequests();
}

/**
 * This is called when we are disconnected from the MarketBillingService.
 */
@Override
public void onServiceDisconnected(ComponentName name) {
    Log.w(TAG, "Billing service disconnected");
    mService = null;
}

Would someone help me understand why this is happening?

Thanks!

like image 958
Genadinik Avatar asked Jul 12 '12 17:07

Genadinik


4 Answers

Make sure your class implements the ServiceConnection interface.

like image 195
Ran Avatar answered Sep 28 '22 07:09

Ran


In App billing is a challenge to get started with. The trick is to get it started in a independent project and then do all your specific feature. Trust me on this, and done be brave and do it all together, its not worth the time it takes to get started. I hope google improves on in app billing overall, to make it easy to implement, understand and debug. I had blogged about it a while back and created a helloworld kinda project for people to download and get working. I hope it helps you too.

Debug Android inapp billing using Eclipse

like image 30
Siddharth Avatar answered Sep 28 '22 09:09

Siddharth


I think you should simply remove the @Override decorator from both methods. I'm using the Google BillingService class and this is my method:

public void onServiceConnected(ComponentName name, IBinder service)
{        
    mService = IMarketBillingService.Stub.asInterface(service);
    runPendingRequests();
}

You are implementing an interface, not extending a class with abstract methods.

like image 36
John J Smith Avatar answered Sep 28 '22 09:09

John J Smith


You might try to use default compile options.

Right-click (or Control-Click) the project and select "Properties"

Select "Java Compiler"

Uncheck "Enable Project Specific Settings"

Eclipse will prompt to re-compile and it should be all good.

like image 34
Chris Jones Avatar answered Sep 28 '22 07:09

Chris Jones