Hi,
I am using 0.9 beta SDK.
I want to have a service defined within one application to be
invokable from another.
The application hosting the service has, in its manifest, the
following inside the application tag:

<service android:name=".service.BackgroundService"
android:process=":remote"  android:exported="true"
android:permission="android.permission.ACCESS_BACKGROUND_SERVICE">
        <intent-filter>
                <action android:name="com.abc.xyz.service.BackgroundService" />
        </intent-filter>
</service>

It also has the following inside the manifest tag:
<permission android:name="android.permission.BACKGROUND_SERVICE"
android:protectionLevel="dangerous"/>

In my client application's manifest xml file, I have the following
inside manifest tag:
<uses-permission
android:name="android.permission.ACCESS_BACKGROUND_SERVICE" />

The client Activity code has the following API called from its
onCreate() method:

    private void startBackgroundService()
    {
        mConnection = new ServiceConnection()
        {
            public void onServiceConnected(ComponentName className,
IBinder service)
            {
                Log.i(TAG, "Connected to background service");
                mService =
BackgroundService.Stub.asInterface(service);
            }

            public void onServiceDisconnected(ComponentName className)
            {
                mService = null;
                Log.i(TAG, "Background service disconnected");
            }
        };

        Intent intent = new Intent(this,
                com.abc.xyz.service.BackgroundService.class);

        startService(intent);

        boolean result = bindService(intent, mConnection,
Context.BIND_AUTO_CREATE);

        Log.i(TAG, "Background service bind result:  " + result);
    }

When I run the client Activity, it can not bind to the service:
- the log statement at the end has "Background service bind result:
false".
- the onServiceConnected() method is not called
- There is a waring log from ActivityManager:
WARN/ActivityManager(58): Unable to start service Intent
{ comp={com.abc.xyz.client/com.abc.xyz.service.BackgroundService} }:
not found


I have tried running the same without any permission in the service
application manifest and also without the uses-permission tag in
client. The result was the same.

But when I run a similar client code inside my service application
(without specifying any permissions), it runs perfectly.

Finally, the most peculiar thing is happening when I am running this
client code inside my service application but with the permissions
specified (as written above) in the manifest - it runs with this error
at the statement "startService(intent)":

Caused by: java.lang.SecurityException: Not allowed to start service
Intent { comp={com.abc.xyz/com.abc.xyz.service.BackgroundService} }
without permission android.permission.ACCESS_BACKGROUND_SERVICE

Any hint on this will be highly appreciated. I'd also like to know
whether I can start and access the service from an ActivityGroup
outside the service application domain.

Thanks,
-Raktim.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to