Paulius Liekis
Paulius Liekis

Reputation: 1730

Why do I get "Unable to start service Intent"?

I'm trying get some licensing code from AndroidPit.com working, but I get "Unable to start service Intent". Basically my code looks like this:

        Intent licenseIntent = new Intent("de.androidpit.app.services.ILicenseService");            
        if (mContext.bindService(licenseIntent, this, Context.BIND_AUTO_CREATE))
        {
            // success
        }
        else
        {
            // failure (I get this all the time(
        }

I tried passing ILicenseService class explicitly:

        Intent licenseIntent = new Intent(mContext, de.androidpit.app.services.ILicenseService.class);

but I still get the same problem.

I managed to get Android Market LVL library working which uses identical code, so I don't really understand why it fails to find "de.androidpit.app.services.ILicenseService", but manages to find "com.android.vending.licensing.ILicensingService".

Most of the answers I found here say that you need to append stuff to your AndroidManifest.xml, but you don't anything for "com.android.vending.licensing.ILicensingService" to work, so I guess I shouldn't need anything "de.androidpit.app.services.ILicenseService" (they both derive from android.os.IInterface).

Thanks in advance.

Upvotes: 0

Views: 1116

Answers (2)

Paulius Liekis
Paulius Liekis

Reputation: 1730

The solution in my case was to start a server part on my phone (AppCenter from AndroidPit.com in this case). No entries in AndroidManifest are necessary for the client application.

Upvotes: 0

CommonsWare
CommonsWare

Reputation: 1007554

Most of the answers I found here say that you need to append stuff to your AndroidManifest.xml

Those answers are correct.

but you don't anything for "com.android.vending.licensing.ILicensingService" to work

That is because com.android.vending.licensing.ILicensingService is a remote service, one that is not in your project, but rather in the firmware of the device.

so I guess I shouldn't need anything "de.androidpit.app.services.ILicenseService" (they both derive from android.os.IInterface).

That is flawed reasoning. By your argument, java.util.HashMap does not go in the manifest, and both java.util.HashMap and any implementation of Activity all derive from Object, so therefore you do not need to put your activities in the manifest. If you try this, you will quickly discover that your activities no longer work.

If it is a component (activity, service, content provider, or some implementations of BroadcastReceiver), and the implementation of the component is in your project (directly, via a JAR, via a library project, etc.), you must have an entry in the manifest for it.

Wherever you got the service from should provide you with instructions for adding the service to your manifest, and they should also supply you with instructions for creating the Intent used to bind to it. If they do not provide this documentation, perhaps you should reconsider your use of this product.

Upvotes: 1

Related Questions